将 OAuth1 附加到 GuzzleHttp\Client
Attaching OAuth1 to GuzzleHttp\Client
我正在尝试升级 class 以使用 GuzzleHttp\Client
通过 Twitter api 搜索推文。我无法附加 Oauth1
。它适用于 Guzzle3 和 OAuthPlugin。
这是代码块:
$client = new Client(['base_uri' => 'https://api.twitter.com']);
$auth = new Oauth1([
'consumer_key' => Config::get('twitter.consumer_key'),
'consumer_secret' => Config::get('twitter.consumer_secret'),
'token' => Config::get('twitter.token'),
'token_secret' => Config::get('twitter.token_secret')
]);
// Not sure if this is correct
$client->getEmitter()->attach($auth); // This is line 40 inside TwitterServiceProvider.php
我收到以下错误:
InvalidArgumentException in Client.php line 80: Magic request methods require a URI and optional options array
1. in Client.php line 80
2. at Client->__call('getEmitter', array()) in TwitterServiceProvider.php line 40
P.S 到目前为止,我认为我应该使用 https://github.com/guzzle/oauth-subscriber。然而,还没有运气。
已解决。
- 我无法使用 getEmitter 让它工作。这可能不是正确的方法。
- 我切换到
guzzle/oauth-subscriber
,现在可以使用了。这里有一个很好的例子:https://github.com/guzzle/oauth-subscriber
base_uri
选项应该有尾部斜杠。
新代码:
$stack = HandlerStack::create();
$auth = new Oauth1([
'consumer_key' => Config::get('twitter.consumer_key'),
'consumer_secret' => Config::get('twitter.consumer_secret'),
'token' => Config::get('twitter.token'),
'token_secret' => Config::get('twitter.token_secret')
]);
$stack->push($auth);
$client = new Client([
'base_uri' => 'https://api.twitter.com/1.1/',
'handler' => $stack,
'auth' => 'oauth'
]);
请求如下:
$client->get('search/tweets.json', [
'query' => ['q' => $query]
]);
我正在尝试升级 class 以使用 GuzzleHttp\Client
通过 Twitter api 搜索推文。我无法附加 Oauth1
。它适用于 Guzzle3 和 OAuthPlugin。
这是代码块:
$client = new Client(['base_uri' => 'https://api.twitter.com']);
$auth = new Oauth1([
'consumer_key' => Config::get('twitter.consumer_key'),
'consumer_secret' => Config::get('twitter.consumer_secret'),
'token' => Config::get('twitter.token'),
'token_secret' => Config::get('twitter.token_secret')
]);
// Not sure if this is correct
$client->getEmitter()->attach($auth); // This is line 40 inside TwitterServiceProvider.php
我收到以下错误:
InvalidArgumentException in Client.php line 80: Magic request methods require a URI and optional options array
1. in Client.php line 80
2. at Client->__call('getEmitter', array()) in TwitterServiceProvider.php line 40
P.S 到目前为止,我认为我应该使用 https://github.com/guzzle/oauth-subscriber。然而,还没有运气。
已解决。
- 我无法使用 getEmitter 让它工作。这可能不是正确的方法。
- 我切换到
guzzle/oauth-subscriber
,现在可以使用了。这里有一个很好的例子:https://github.com/guzzle/oauth-subscriber base_uri
选项应该有尾部斜杠。
新代码:
$stack = HandlerStack::create();
$auth = new Oauth1([
'consumer_key' => Config::get('twitter.consumer_key'),
'consumer_secret' => Config::get('twitter.consumer_secret'),
'token' => Config::get('twitter.token'),
'token_secret' => Config::get('twitter.token_secret')
]);
$stack->push($auth);
$client = new Client([
'base_uri' => 'https://api.twitter.com/1.1/',
'handler' => $stack,
'auth' => 'oauth'
]);
请求如下:
$client->get('search/tweets.json', [
'query' => ['q' => $query]
]);