iT邦幫忙

0

WooCommerce Rest Api 權限問題

23/4 更新
[已解決]

使用woocommerce 的rest API controller 來實做自己的custom point,register_rest_route此函數就可以將自己需要的點註冊進wc之中了,permission在自己寫之後,更可以不用去猜那些沒有文件的函式,當然woocommerce_rest_check_permissions寫得很不賴,不過要花不少時間歸類每一個funtion回傳的各項參數就是了,而且當初試著要把每個參數印出來,但找不到位置可以將這些印出來,要用這一項可能需要有比較高的Debug技巧。

22/4 更新

看到作者在github上一段話,覺得心涼涼的....

This API is not designed for user carts/to be used by customers. Your app needs to be in the middle and keep keys private.傳送門

原文

各位大大安安,最近正在嘗試使用WooCommerce API,接著也非常順利,但發現有個關於權限的問題發生,我在admin時,任何請求都是可以的,而我之後有創造第二個金鑰,而這個帳號並不是admin但是設定成read/write,所以導致任何請求都沒辦法運作,我現在試著嘗試使用woocommerce_rest_check_permissions來將該帳號可以順利通過,但不知道為何總是跑不出來,而woocommerce的文件之中也沒有type的型別可以參照讓人頭痛。

這是我下的cUrl:

http://localhost/wp-json/wc/v3/orders?customer=54

而此為我加入的程式碼,但是並沒有作用,仍然是顯示403

add_filter( 'woocommerce_rest_check_permissions', 'airline_retrive_order_permission_issue', 10, 4 );

function airline_retrive_order_permission_issue( $permission, $context, $object_id, $type ) {
	return ( 'order' === $type && '54' === get_current_user_id() ) ? true : $permission;
  // return $permission;
}

此為403的log

{
    "code": "woocommerce_rest_cannot_view",
    "message": "Sorry, you cannot list resources.",
    "data": {
        "status": 403
    }
}

簡而言之,正在尋找是否有辦法能夠判別是哪一位使用者發出的要求,就回傳該使用者的order到使用者端,現在一切403,真是讓人覺得REST API是場浮雲QQ如果沒有原生就可以解決的方式,應該會去用增加endpoint來增加current_user_can,並且手動去拉該user的訂單,不過authencation就是個問題就是了。

尚未有邦友回答

立即登入回答