0

会社のオンライン ストア (php/Laravel で記述) を Xero と統合して、注文ごとに請求書を作成できるようにしようとしています。このために、プライベート Xero アプリケーションを作成し、Oauth 認証に必要な証明書を生成し、それを Xero アプリに追加して、コンシューマ キーとシークレットを取得しました。

公式の 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);

ただし、次の例外がスローされます。

[GuzzleHttp\Exception\ClientException]
クライアント エラー:応答が返さGET https://api.xero.com/api.xro/2.0/Contactsれました: oauth_problem=consumer_key_unknown&oauth_problem_advice=Consumer%20key%20was%20not%20recognised401 Unauthorized

私が知る限り、Xero アプリを適切にセットアップし、コンシューマー キーとシークレットを生成しましたが、これをデバッグできないようです。

適切なリクエストを行う方法について何かアドバイスはありますか?

4

2 に答える 2