Присоединение OAuth1 к GuzzleHttp\Client

Я пытаюсь обновить класс, чтобы использовать 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 . Однако пока не повезло.


person mishka    schedule 08.09.2015    source источник


Ответы (1)


Решено.

  1. Я не мог заставить его работать с помощью getEmitter. Возможно, это не правильный подход.
  2. Я переключился на guzzle/oauth-subscriber, и теперь он работает. Вот хороший пример: https://github.com/guzzle/oauth-subscriber.
  3. 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]
                        ]);
person mishka    schedule 09.09.2015
comment
Ссылка github.com/guzzle/guzzle/blob/master/UPGRADING.md система событий была полностью удалена из Guzzle 6. - person Shaun Bramley; 29.09.2015