2017-10-06 32 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))。大部分时间用于检查令牌的有效性 –

相关问题