2016-07-19 6 views
2

Я пытаюсь войти в систему с помощью facebook с помощью angularjs с laravel. Но я застрял с этой ошибкой:Активный токен доступа должен использоваться для запроса информации о текущем пользователе в laravel

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

Вот мой контроллер:

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

Я столкнулся с этой проблемой. Вам нужно запустить composer update. Затем запустите команду composer dump-autoload. Эта проблема была исправлена ​​в версии Socialite v2.0.21.