私は、各注文の請求書を作成できるように、私の会社のオンラインストア(php/Laravelで書かれています)をXeroに統合しようとしています。このため私はプライベートXeroアプリケーションを作成し、Oauth認証に必要な証明書を生成してXeroアプリケーションに追加しました。これで私のコンシューマキーと秘密が得られました。PHP/Guzzleを使用してXero APIのプライベートアプリケーションへのリクエストを認証
私は公式のPHPラッパーを見て、それは非常に時代遅れであり、私のアプリへの統合には適していないことがわかったので、Xeroのやり取りの量が少ないことを考えると、私はAPIを直接呼び出そうと思っていました。
私はGuzzleとGuzzle Oauthのサブスクライバを使用していますが、正しく認証されたリクエストを送信するのは難しいです。
私Xeroなどのアプリが(Xeroなどdevのエリアで述べたように)次の段落は、私の要求に適用されなければならないプライベートで考える:
$stack = HandlerStack::create();
$middleware = new Oauth1([
'consumer_key' => config('services.xero.key'),
'consumer_secret' => config('services.xero.secret'),
'signature_method' => Oauth1::SIGNATURE_METHOD_RSA,
]);
$stack->push($middleware);
$client = new Client([
'base_uri' => 'https://api.xero.com/api.xro/2.0/',
'handler' => $stack,
]);
$res = $client->request('GET', 'Contacts');
dd($res);
:
Note, For Private applications, the consumer token and secret are also used as the access token and secret.
は、だから私はそうのような要求を構築
しかし、次の例外がスローされます。
[GuzzleHttp\Exception\ClientException]
Client error:GET https://api.xero.com/api.xro/2.0/Contacts
resulted in a401 Unauthorized
response:
oauth_problem=consumer_key_unknown&oauth_problem_advice=Consumer%20key%20was%20not%20recognised
Xeroアプリをセットアップし、コンシューマーキーとシークレットを生成しましたが、これをデバッグすることはできません。
適切なリクエスト方法についてアドバイスをいただけますか?
あなたのリクエストはよかったです。 "このエラーは、コンシューマキー値が登録されたアプリケーションのコンシューマキー値と一致しない場合に返されます。"あなたのコンシューマーキーが有効ですか?はいの場合はxeroサポートに連絡してください。 – clinical
私はコンシューマー・キーと秘密が正しいと確信しています。リクエストを送信する前にクライアントオブジェクトをコンソールにダンプし、その文字列が自分のアプリケーションの文字列と一致することを確認できます。私はXeroのサポートを試みます。 – harryg
通話に証明書ファイルを含める必要がありますか? – harryg