2016-07-19 7 views
2

laravelでangularjsを使用してFacebookにログインしようとしています。しかし、私はこのエラーで立ち往生しています:laravelで現在のユーザーに関する情報を照会するには、アクティブなアクセストークンを使用する必要があります

public function facebookLogin(Request $request){ 
     $client = new GuzzleHttp\Client(); 

     $params = [ 
      'code' => $request->input('code'), 
      'client_id' => $request->input('clientId'), 
      'redirect_uri' => $request->input('redirectUri'), 
      'client_secret' => Config::get('app.facebook_secret'), 
      'grant_type'=>'client_credentials' 
     ]; 

     // Step 1. Exchange authorization code for access token. 
     $accessTokenResponse = $client->request('GET', 'https://graph.facebook.com/v2.5/oauth/access_token', [ 
      'query' => $params 
     ]); 


     $accessToken = json_decode($accessTokenResponse->getBody(), true); 

     // Step 2. Retrieve profile information about the current user. 
     $fields = 'id,email,first_name,last_name,link,name,picture'; 
     /**** problem counted with this request ************/ 
     $profileResponse = $client->request('GET', 'https://graph.facebook.com/v2.5/me', [ 
      'query' => [ 
       'access_token' => $accessToken['access_token'], 
       'fields' => $fields 
      ] 
     ]); 

     $profile = json_decode($profileResponse->getBody(), true); 

     $user = User::where('email', '=', $profile['email'])->first(); 

     if($user) { 
      Auth::loginUsingId($user->id); 
      $user_info = Auth::user(); 
      $profile_seen = $user_info->profile_seen; 
      User::where('id', '=', $user_info->id)->update(array('profile_seen' => 1)); 
      return Response::json(['login' => Auth::check(),'profile_seen' => $profile_seen ]); 

     }else{ 

      $user = User::create(array(
             'username' => $profile['name'], 
             'email'  => $profile['email'], 
             'first_name' => $profile['first_name'], 
             'last_name' => $profile['last_name'], 
             'facebook_id'=> $profile['id'] 
             )); 

      Auth::loginUsingId($user->id,1); 
      $user_info = Auth::user(); 
      $profile_seen = $user_info->profile_seen; 
      User::where('id', '=', $user_info->id)->update(array('profile_seen' => 1)); 
      return Response::json(['login' => Auth::check(),'profile_seen' => $profile_seen ]); 
     } 

    } 
+0

よく、アクセストークンをデバッグしましたか?あなたは有効なものを手に入れますか? – luschn

+0

はい@luschn –

+1

あなたはそれが有効なユーザートークンであることを確認しましたか?エラーメッセージは非常に明確です。 – luschn

答えて

4

私はこの問題が発生した:

{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthExce (truncated...)

は、ここに私のコントローラです。 composer updateを実行する必要があります。次に、コマンドcomposer dump-autoloadを実行します。この問題はバージョンSocialite v2.0.21で修正されています。

関連する問題

 関連する問題