2013-07-23 92 views
0

好吧,这里是我的代码片段HTTPS GET请求https://www.googleapis.com/plus/v1/people/me

$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+的,你应该总是用你的访问令牌验证请求发送HTTPS GET请求来https://www.googleapis.com/plus/v1/people/me检索人民API用户配置文件信息。

,所以我想最好的办法就是进行HTTPS GET请求googleapis.com ..但我不知道该怎么做。任何人都可以带路吗?

回答

2

创建Google_Oauth2Service对象(把它放在$加初始化下),如:

$client = new Google_Client(); 
$plus = new Google_PlusService($client); 
$oauth2 = new Google_Oauth2Service($client); 

后成功地验证客户使用:

$userInfo = $oauth2->userinfo->get(); 
$email = $userInfo['email']; 
+0

我这样做,但在此之前,我需要添加require_once “搜索引擎API-PHP-客户/ SRC /了contrib/Google_Oauth2Service.php”;对?但在那之后我得到这个错误“ 致命错误:类‘Google_TokeninfoServiceResource’未找到”。事实上,当我试图运行在谷歌的API的PHP客户端/例子/用户信息的index.php的例子/返回相同的错误 – imin

+0

确定了它。你的回答是正确的。该错误是因为最新的google-api-php-client文件(版本0.6.3)。必须降级到版本0.6.2才能运行。感谢 – imin

+0

如何创建圈子或添加人圈?它必须使用'Google_Service_PlusDomains'类而不是'Google_Service_Oauth2'类?当我使用'Google_Service_PlusDomains'时,我也遇到了这个错误,例如: '$ this-> google = new \ Google_Service_PlusDomains($ this-> client); $ this-> google-> people-> get('me'' –