/** * {@inheritdoc} */ public function getUser($token) { $request = new Request(self::USER_API_URI . '?access_token=' . $token, Request::METHOD_GET); $request = $this->request($request); $client = new Curl(); $response = $client->send($request); $result = json_decode($response->getBody()->getContents(), true); if (isset($result['error'])) { throw new Exception(sprintf('[%s] %s', $result['error']['code'], $result['error']['message'])); } return (new User($result))->setId(isset($result['id']) ? $result['id'] : null)->setEmail($result['emails'] ? $result['emails'][0]['value'] : null)->setAvatarUri($result['image'] ? $result['image']['url'] : null)->setUsername($result['emails'] ? $result['emails'][0]['value'] : null)->setName(isset($result['displayName']) ? $result['displayName'] : null); }
/** * Get user email * * @param string $token Access token * * @return null|string * @throws Exception */ protected function getEmail($token) { if (in_array(self::SCOPE_USER_EMAIL, $this->getScopes())) { $request = new Request(self::USER_API_URI . '/emails?access_token=' . $token, Request::METHOD_GET); $request = $this->request($request); $client = new Curl(); $response = $client->send($request); $result = json_decode($response->getBody()->getContents(), true); if ($response->getStatusCode() !== 200) { throw new Exception(sprintf('%s (%s)', $result['message'], $result['documentation_url'])); } foreach ($result as $email) { if ($email['primary'] && $email['verified']) { return $email['email']; } } } return null; }