Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.60 KB | None | 0 0
  1. public function externalLogin(Request $request)
  2.    {
  3.     try {
  4.  
  5.       error_reporting(E_ERROR);
  6.  
  7.       $this->validate($request, [
  8.         'accessToken' => 'required',
  9.         'provider' => 'required',
  10.         ]);
  11.  
  12.       $clientInfo = $this->_userByAccessToken($request->get('accessToken'));
  13.       extract($clientInfo);
  14.       /** @var string $id */
  15.       /** @var string $email */
  16.       /** @var string $name */
  17.       /** @var string $gender */
  18.       /** @var string $link */
  19.       /** @var string $locale */
  20.       /** @var string $timezone */
  21.       /** @var string $picture */
  22.  
  23.       if(isset($email) && !empty($email)) {
  24.  
  25.         /** @var Client $client */
  26.         $findUser = User::where('email', $clientInfo['email'])->first();
  27.         if($findUser) {
  28.             $loggedUser = $findUser;
  29.         }else{
  30.             $client = new User();
  31.             $client->email = $email;
  32.             $client->name = $name;
  33.             $client->gender = $gender;
  34.             $client->password = str_random(10);
  35.             $client->avatar = $picture;
  36.             $client->facebook_id = $id;
  37.             $client->role = 'client';
  38.             $client->save();
  39.             $loggedUser = $client;
  40.         }
  41.  
  42.         $token = $this->auth->fromUser($loggedUser);
  43.         auth()->login($loggedUser);
  44.  
  45.         return response()->json([
  46.           'item' => $loggedUser,
  47.           'meta' => [
  48.             'token' => $token
  49.           ]
  50.         ], 200);
  51.       } else {
  52.         throw new \ErrorException('Não foi possivel recuperar seu email do facebook');
  53.       }
  54.     } catch (\Exception $e) {
  55.       return $this->responseServerError("Houve um erro ao processar sua requisição", ['error' => $e->getMessage()]);
  56.     }
  57.  
  58.   }
  59.  
  60.   protected function _userByAccessToken($token)
  61.   {
  62.  
  63.     $fieldsArray = [
  64.       "id",
  65.       "email",
  66.       "first_name",
  67.       "middle_name",
  68.       "last_name",
  69.       "name",
  70.       "about",
  71.       "birthday",
  72.       "gender",
  73.       "hometown",
  74.       "languages",
  75.       "location",
  76.       "locale",
  77.     ];
  78.  
  79.     $fields = implode(",", $fieldsArray);
  80.  
  81.     $response = [];
  82.  
  83.     try {
  84.       $user_details = "https://graph.facebook.com/v2.4/me?fields={$fields}&access_token=" .$token;
  85.  
  86.       $response = file_get_contents($user_details);
  87.       $response = json_decode($response, true);
  88.       $response['picture']= "https://graph.facebook.com/{$response['id']}/picture?width=400&height=400";
  89.  
  90.       if(!$response['email']) {
  91.         throw new \Exception(json_encode($response));
  92.       }
  93.  
  94.     } catch (\ErrorException $e) {
  95.       throw $e;
  96.     }
  97.     return $response;
  98.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement