public function handleResponse(UserResponseInterface $response, UserService $userService) { $fields = $response->getResponse(); $gitHubLogin = $fields['login']; $accessToken = $response->getAccessToken(); $user = $userService->findByGitHubLogin($gitHubLogin); if (null === $user) { throw new UsernameNotFoundException(); } $oAuthUser = new OAuthUser($user); $oAuthUser->addRole('ROLE_GITHUB_USER'); $oAuthUser->setAccessToken($accessToken); if (array_key_exists('name', $fields)) { $gitHubName = $fields['name']; $oAuthUser->setRealName($gitHubName); } else { $oAuthUser->setRealName($gitHubLogin); } $client = new Client(); $client->setOption('api_version', 'v3'); $client->authenticate($response->getAccessToken(), Client::AUTH_HTTP_TOKEN); /* @var \Github\Api\CurrentUser $currentUserApi */ $currentUserApi = $client->api('current_user'); $emails = $currentUserApi->emails(); $allEMails = $emails->all(); $oAuthUser->setEmail($this->getPrimaryEmailAddress($allEMails)); return $oAuthUser; }
public function handleResponse(UserResponseInterface $response, UserService $userService) { $fields = $response->getResponse(); $email = $fields['email']; $login = explode('@', $email)[0]; $user = $userService->findByGoogleLogin($login); if (null === $user) { throw new UsernameNotFoundException(); } $oAuthUser = new OAuthUser($user); $oAuthUser->addRole('ROLE_GOOGLE_USER'); $oAuthUser->setAccessToken($response->getAccessToken()); $oAuthUser->setRealName($fields['name']); $oAuthUser->setEmail($email); return $oAuthUser; }