2013-07-23 91 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'' –