2017-10-06 33 views
2

因此,我設法將谷歌用戶帳戶連接到API.AI我的代理按照這guide和發現類似answer這一點。獲取谷歌用戶配置文件給出的用戶ID和訪問令牌

已添加「配置文件」和「電子郵件」作爲客戶端範圍。現在

,助手已發送用戶ID和的accessToken我履行網絡掛接,下originalRequest->數據 - >輸入 - >用戶

事情是這樣的:

"user":{ 
    "accessToken":"TWWM**********************bgf", 
    "locale":"en-US", 
    "userId":"AKL*********************exlT" 
} 

到目前爲止,我accesToken Google總是使其無效。

如果我檢查我的令牌:

https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=TWWM**********************bgf 

{ 
    "error_description": "Invalid Value" 
} 

如何獲得基本的用戶資料信息,如名字,姓氏和電子郵件給出了上述的accessToken呈現爲無效和UserId?

我應該調用哪個GoogleApi終點?

回答

1

對於初學者,此處提供的userId字段不是Google ID。它是匿名的,具體的助理ID,用於在會話之間匿名跟蹤某個人,但用戶可以根據需要撤銷該ID。通過OAuth獲取更多信息是沒有用的。

接下來,請記住,在您的測試中,accessToken的使用壽命有限 - 通常大約一個小時。如果您在那個小時後進行測試,那麼您試圖從中獲取信息的端點將返回一個錯誤。 (和OAuth喜歡含糊什麼錯誤實際上是。)

我不知道該https://www.googleapis.com/oauth2/v3/tokeninfo端點實際上接受訪問令牌。至少我找不到任何說明它的文檔。它主要用於交換其他令牌訪問令牌。

您有幾個選項可以根據您請求的範圍獲取所需的信息。 (而且很可能比這裏提到的兩個以上)在這兩種情況下,你會通過accessToken在HTTP Authorization頭:

Authorization: Bearer TWWM**********************bgf 

使用Google People API你會使用people.get方法。爲了得到公正的姓名和電子郵件地址字段,你可以使用這樣的URL

https://people.googleapi.com/v1/people/me?personFields=names,emailAddresses 

plus.people.get是相似的,但返回不同格式的信息。在這種情況下,你會使用這樣的URL

https://www.googleapis.com/plus/v1/people/me 
+0

「它主要用來爲接入令牌交換其他令牌」令牌信息端點僅用於獲取有關'access_token','id_token信息''或'token_handle'(api explorer [here](https://developers.google.com/apis-explorer/#p/oauth2/v2/oauth2.tokeninfo))。大部分時間用於檢查令牌的有效性 –

相關問題