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;
    }