私は Guzzle 6 とOAuth サブスクライバーをマシン間の通信に使用しており、ベース uri https://foo.barを持つ API とインターフェースし、ベンダーが次のパラメーターの指示に従って提供しています。
- コンシューマ キー
- 消費者の秘密
- リクエストトークン URL: https://foo.bar/oauth/request
- 認可 URL: https://foo.bar/oauth/authorize
- アクセストークンURL: https://foo.bar/oauth/access
The OAuth Bibleに従うと、手動の承認リダイレクトをバイパスしたいので、二足歩行の OAuth が必要であることを意味しますが、クライアント レベルでリクエスト トークン URL とアクセス トークン URL を設定する方法/場所がわかりません。
コンシューマ キーとシークレットのみを使用して単純なクライアントをセットアップしましたが、これにより部分的な API アクセスしか許可されません。
$stack = HandlerStack::create();
$middleware = new Oauth1([
'consumer_key' => $params['consumerKey'],
'consumer_secret' => $params['consumerSecret'],
'token_secret' => false,
]);
$stack->push($middleware);
$client=new Client([
'base_uri' => $params['baseUri'],
'handler' => $stack,
'auth' => 'oauth'
]);
//Leg #1: Obtain application request token
$requestTokenResponse = $client->post('/oauth/request')->getBody()->getContents();
/* requestTokenResponse now contains in a single string variable with value:
*'oauth_token=4plbxbL9Um9J6IN7XLDy5DYDwJlrISQ5QMqi43JaXaQ&
* oauth_callback_confirmed=true&
* oauth_token_secret=JqCC51ja3Q2yklV2xyphUromHGhIwWjgcx%40hXvO3JosbkYWKVr'
*/
$requestTokenParams = [];
foreach (explode('&',$requestTokenResponse) as $queryString) {
$query = explode('=', $queryString);
$requestTokenParams[$query[0]] = $query[1];
}
//Leg #2 Starts Here
//Dynamically add middleware params (setting token and token_secret?)
//Obtain access token after middleware update
$accessTokenResponse = $client->post('/oauth/access')->getBody()->getContents();
先に進む方法がわかりません:
次の投稿では、token と token_secret を設定する必要があり、次の呼び出しの前にミドルウェアのパラメーターを変更する必要があるようです。これは機能していないようです。また、ハンドラー スタックに手動でプッシュすることもできません。
助けてください、事前に感謝します