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就是個問題就是了。