web-dev-qa-db-ja.com

WooCommerce-woocommerce_rest_cannot_view-ステータス401

コンシューマキーとコンシューマシークレットを生成しました。 WebサイトにはSSLがインストールされています。また、JSONおよびRESTサービスに必要なプラグインをインストールしました。これは、URLが次のように表示される方法です。

https://<url>/wp-json/wc/v1/products

POSTMANを使用して基本認証を使用して製品の詳細を取得(GET)しようとすると、Chromeプラグイン、次のようなJSON応答が返されます。

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

コンシューマーキーに対応する読み取りと書き込みの両方のアクセス許可を持っています。

9
Ram

同じ問題に遭遇しました。

ここに私がそれを解決する方法があります:

require "woocommerce_api"

woocommerce = WooCommerce::API.new(
  "https://example.com",
  "consumer_key",
  "consumer_secret",
  {
    wp_json: true,
    version: "wc/v1",
    query_string_auth: true
  }
)

キーはquery_string_auth: trueHTTPSでクエリ文字列がtrueであるため、基本認証を強制する必要があります

6
Aloha

他の人を助けようとしている:CURLを試行しているときに401応答と、コンテンツタイプ "application/json"として要求しようとしているVBAと格闘していましたが、ブラウザにこれを入力するだけで有効な応答をプルできましたアドレスバー: https://mywebsite.com/wp-json/wc/v2/products?consumer_key=ck_blahblah&consumer_secret=cs_blahblah

この考えに従って、VBAアプリに戻り、コンテンツタイプを「application/text」に変更し、有効な応答テキストを応答コード200でプルすることができました。これが誰かに役立つことを願っています。

1
UltimatePeter

ローカル開発(localhost)の場合、コンシューマーキーとコンシューマーシークレットの代わりに、ベーシック認証(Postmanなど)を使用することもできます。シームレスに動作します。

0
michal-michalak

これが私が心配するのをやめ、次に進んだ方法です。

要するに、woocommerceレストコントローラーのほとんどすべてにSOMEWPRESTCLASS::get_item_permissions_check()メソッドがあり、このメソッドがwc_rest_check_post_permissions()を呼び出して、そのエラーを返すかどうかを判断します。

だからあなたはそれにフックしてあなたが望む方法で検証します:

add_filter( 'woocommerce_rest_check_permissions', 'my_woocommerce_rest_check_permissions', 90, 4 );

function my_woocommerce_rest_check_permissions( $permission, $context, $object_id, $post_type  ){
  return true;
}
0
Quickredfox