示例#1
0
 /**
  * Process data returned as callback from the client
  *
  * @param  string  $user_id
  * @param  string  $profile_id
  * @param  array  $data = []
  * @return \App\Models\Provider
  * @throws \Exception
  */
 public function handleCallback($user_id, $profile_id, $data = [])
 {
     if (empty($data['oauth_token']) || empty($data['oauth_verifier'])) {
         throw new \Exception('Token validation failed');
     }
     $request_token = $data['oauth_token'];
     $request_token_verifier = $data['oauth_verifier'];
     $access_token = $this->getAccessToken($request_token, $request_token_verifier);
     $provider = $this->providerRepository->create($user_id, $profile_id, ServiceTwitter::SERVICE_CODE, ['request_token' => $request_token, 'request_token_verifier' => $request_token_verifier, 'oauth_token' => $access_token['oauth_token'], 'oauth_token_secret' => $access_token['oauth_token_secret'], 'expires_at' => ServiceTwitter::TOKEN_TTL + time()]);
     $userInfo = $this->getUserInfo($provider['_id']);
     return $this->providerRepository->create($user_id, $profile_id, ServiceTwitter::SERVICE_CODE, ['vendor_id' => (string) $userInfo->id, 'name' => $userInfo->name, 'profile_image_url' => $userInfo->profile_image_url]);
 }