2016-12-03 2 views
0

Im используя guzzle с laravel 5.3 и им пытаются получить доступ к API твиттеров для получения users timeline. Но когда я пытаюсь, я получаю сообщение об ошибке {"errors":[{"code":215,"message":"Bad Authentication data."}]}.Как использовать жужжание с API twitter?

Это мой код:

public function getUserTimeline() { 
    $client = new \GuzzleHttp\Client(); 
    $token = "user_id-token"; 
    $secret = "user_secret"; 
    $request = $client->get('https://api.twitter.com/1.1/statuses/user_timeline.json?', 
           [ 'query' => [ 'consumer_key' => env('TWITTER_CLIENT_ID'), 
               'consumer_secret' => env('TWITTER_SECRET'), 
               'screen_name' => "a_screen_name", 
               'token' => $token, 
               'token_secret' => $secret, 
               'count'=>'2' 
              ]] 
          )); 
    dd(json_decode($request->getBody())); 
} 

Я проверил и проверить маркеры в актуальном состоянии, но он продолжает давать мне эту ошибку. Я не уверен, что я пропустил.

ответ

0

Twitter Api использует OAuth 1.1, так что вам нужно будет использовать oauth-subscriber:

composer require guzzlehttp/oauth-subscriber

и здесь есть рабочий пример:

<?php 

use GuzzleHttp\Client; 
use GuzzleHttp\HandlerStack; 
use GuzzleHttp\Subscriber\Oauth\Oauth1; 

class TwitterApiController extends Controller{ 


    public function getUserTimeline() 
    { 
     $stack = HandlerStack::create(); 

     $middleware = new Oauth1([ 
      'consumer_key' => 'env('TWITTER_CLIENT_ID')', 
      'consumer_secret' => 'env('TWITTER_SECRET')', 
      'token'   => $token, 
      'token_secret' => '$secret' 
     ]); 

     $stack->push($middleware); 

     $client = new Client([ 
      'base_uri' => 'https://api.twitter.com/1.1/', 
      'handler' => $stack, 
      'auth' => 'oauth', 
     ]); 

     $res = $client->get('statuses/user_timeline.json',['query' => [ 
      'screen_name' => 'laravelphp', 
      'count' => '5', 
     ]]); 

     dd(json_decode($res->getBody()), true); 
    } 
} 
+0

Спасибо, Есть ли способ сделать это без добавления новый пакет и просто использовать жужжание и получать данные по URL-адресу? – kevinabraham

+0

Уверен, что есть: скопируйте код из связанного пакета, так как он делает именно то, что вам нужно –

Смежные вопросы