2016-12-03 9 views
0

Im guzzleとlaravel 5.3を使用していて、twitters APIにアクセスしてusers timelineを取得しようとしています。しかし、私が試してみると、私は{"errors":[{"code":215,"message":"Bad Authentication data."}]}と表示されるエラーが発生し続ける。twitter APIでguzzleを使用するには?

これは私のコードです:

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

確かにあります:あなたが必要とするものを正確に実行するので、リンクされたパッケージからコードをコピーしてください –

関連する問題