好的,这是我的代码片段
$client = new Google_Client();
$client->setScopes(array('https://www.googleapis.com/auth/plus.me','https://www.googleapis.com/auth/userinfo.email'));
$plus = new Google_PlusService($client);
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
} else {
$_SESSION['auth_token'] = $client->authenticate();
}
现在我有$ _SESSION ['auth_token'],其中包含类似
的内容{"access_token":"ya29.AHESblablablabalbalbalbagTUI4-MfZvwtb6A","token_type":"Bearer","expires_in":3600,"id_token":"blablablabalbalbalba.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiY2lkIjoiNzAzNTg5ODA3MjMxLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXpwIjoiNzAzNTg5ODA3MjMxLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiNzAzNTgblablablabalbalbalbaRlbnQuY29tIiwiaGQiOiJnZW9mbGV4LmNvbS5teSIsInZlcmlmaWVkX2VtYWlsIjoidHJ1ZSIsImVtYWlsX3blablablabalbalbalbaFzei00N25nN3VoLU5NUmh3IiwiYXRfaGFzaCI6IllEeC13UXN6LTQ3bmc3dWgtTk1SaHciLCJpYXQiOjEzNzQ1NjA1NDcsImV4cCI6MTM3NDU2NDQ0N30.ek1FX-pY8BdaI8sDhA0rwmiIDyBV6pHPvBi-l7BxDJCR-YoDQGFN8y-kA1xg-vmoReiVCwhvQhHK__jc-xFSLfJDLbwk-UGyRKu_O7ZCaSviP7WupexIYvLGCyvgLBdjG3K7UIcq0o3L15mQPvQJr9LA7325gwEOZ12Pc1lAHKw","refresh_token":"1\/Y7oilVvUUutfkKMDfblablablabalbalbalbaE","created":1374560847}
我的问题是,如何获取用户的电子邮件?我知道你可以打电话
https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token
但这是获取用户电子邮件的“官方”方式吗?因为从这里https://developers.google.com/accounts/docs/OAuth2Login#exchangecode它说
您的应用在Google认证流程中收到的访问令牌可用于获取有关该用户的其他配置文件信息。请注意,Google正在修改不同端点的行为以简化其使用。我们目前根据现有行为推荐以下内容。如果您使用“登录Google+”,则应始终使用您的访问令牌向https://www.googleapis.com/plus/v1/people/me发送HTTPS GET请求,从People API检索用户个人资料信息。
所以我想最好的方法是对googleapis.com执行HTTPS GET请求..但我不知道该怎么做。谁能带路呢?
答案 0 :(得分:2)
创建一个Google_Oauth2Service对象(将其放在$ plus初始化下),如:
$client = new Google_Client();
$plus = new Google_PlusService($client);
$oauth2 = new Google_Oauth2Service($client);
并在成功验证客户端后使用:
$userInfo = $oauth2->userinfo->get();
$email = $userInfo['email'];