Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function externalLogin(Request $request)
- {
- try {
- error_reporting(E_ERROR);
- $this->validate($request, [
- 'accessToken' => 'required',
- 'provider' => 'required',
- ]);
- $clientInfo = $this->_userByAccessToken($request->get('accessToken'));
- extract($clientInfo);
- /** @var string $id */
- /** @var string $email */
- /** @var string $name */
- /** @var string $gender */
- /** @var string $link */
- /** @var string $locale */
- /** @var string $timezone */
- /** @var string $picture */
- if(isset($email) && !empty($email)) {
- /** @var Client $client */
- $findUser = User::where('email', $clientInfo['email'])->first();
- if($findUser) {
- $loggedUser = $findUser;
- }else{
- $client = new User();
- $client->email = $email;
- $client->name = $name;
- $client->gender = $gender;
- $client->password = str_random(10);
- $client->avatar = $picture;
- $client->facebook_id = $id;
- $client->role = 'client';
- $client->save();
- $loggedUser = $client;
- }
- $token = $this->auth->fromUser($loggedUser);
- auth()->login($loggedUser);
- return response()->json([
- 'item' => $loggedUser,
- 'meta' => [
- 'token' => $token
- ]
- ], 200);
- } else {
- throw new \ErrorException('Não foi possivel recuperar seu email do facebook');
- }
- } catch (\Exception $e) {
- return $this->responseServerError("Houve um erro ao processar sua requisição", ['error' => $e->getMessage()]);
- }
- }
- protected function _userByAccessToken($token)
- {
- $fieldsArray = [
- "id",
- "email",
- "first_name",
- "middle_name",
- "last_name",
- "name",
- "about",
- "birthday",
- "gender",
- "hometown",
- "languages",
- "location",
- "locale",
- ];
- $fields = implode(",", $fieldsArray);
- $response = [];
- try {
- $user_details = "https://graph.facebook.com/v2.4/me?fields={$fields}&access_token=" .$token;
- $response = file_get_contents($user_details);
- $response = json_decode($response, true);
- $response['picture']= "https://graph.facebook.com/{$response['id']}/picture?width=400&height=400";
- if(!$response['email']) {
- throw new \Exception(json_encode($response));
- }
- } catch (\ErrorException $e) {
- throw $e;
- }
- return $response;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement