我正在使用 Guzzle 6 和OAuth 订阅者进行机器对机器的通信,与具有基本 uri https://foo.bar的 API 接口,供应商提供以下参数说明:
- 消费者密钥
- 消费者秘密
- 请求令牌 URL:https ://foo.bar/oauth/request
- 授权网址:https ://foo.bar/oauth/authorize
- 访问令牌 URL:https ://foo.bar/oauth/access
在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();
我不知道现在如何推进:
似乎下一篇文章需要设置令牌和令牌_secret,要求我在下一次调用之前修改中间件参数,这似乎不起作用和/或手动推送到处理程序堆栈。
请帮助,在此先感谢