我正在使用Google操作编写API.AI应用程序(将在google assistant和google home上运行)。该应用应该能够读取\添加事件到用户的谷歌日历帐户。
后端是Google Cloud Functions,我在开发者控制台中启用了Calendar API。
用户应该体验的流程是这样的:
用户:"嗨谷歌,我最后一次与安娜见面的时间是什么时候?"
代理商:"两天前与Anna的最后一次会面"
用户:"明天与Anna安排会面"
代理商:"好的。会议已设置"
如何构建身份验证过程以授予应用程序访问日历的权限?
答案 0 :(得分:4)
更新,2017年11月8日
截至2017年10月4日,Google更新了他们的政策,明确禁止此行为。大约在同一时间,他们也采取了技术措施来防止这种情况发生。
关于启用Calendar API的部分仍然是正确的,但不足以完成原始问题的要求。
原始答案
从广义上讲,您需要执行的身份验证任务分为四个部分:
配置云计划
您需要配置您的云项目,以便它可以访问您需要的Google API并设置OAuth2客户端ID,密码和重定向URI。
转到https://console.cloud.google.com/apis/dashboard并确保您拥有所选项目。然后确保您已启用所需的API。 (在本例中为Calendar API)
选择"凭据"菜单在左边。你应该看到这样的东西:
选择这是针对" Web应用程序" (它......有点......)
输入名称。在下面的屏幕截图中,我使用了" Action客户端"所以我记得这实际上是针对谷歌的行动。
在"授权重定向URI"部分,您需要包含https://oauth-redirect.googleusercontent.com/r/your-project-id
形式的URI替换" your-project-id"部分包含...您在Cloud Console中的项目ID。此时,屏幕应如下所示:
点击"创建"按钮,您将获得一个包含您的客户端ID和密码的屏幕。您现在可以获得这些副本,但您也可以稍后获取它们。
点击"确定"并且你将被带回"证书"添加了新客户端ID的屏幕。如果您需要再次获取ID和密码,可以单击铅笔图标(如果已经泄露,则重置密码)。
配置操作控制台
一旦我们为项目设置了OAuth,我们就需要告诉Actions这是我们用来验证和授权用户的。
转到https://console.actions.google.com/并选择您正在使用的项目。
在概述中,完成所有必要的配置,直到您可以进入步骤4,"帐户关联"。这可能需要您设置名称和图标 - 如果需要,您可以稍后再更正。
在“客户端信息”部分中,输入在云控制台中创建凭据时的客户端ID和客户端密钥。 (如果您忘记了,请转到Cloud Console API凭据部分,然后单击铅笔。)
对于授权网址,请输入https://accounts.google.com/o/oauth2/v2/auth
对于令牌网址,请输入https://www.googleapis.com/oauth2/v4/token
单击“下一步”
配置API.AI
在API.AI中,您需要指明用户需要登录才能使用Action。
转到https://console.api.ai/并选择您正在使用的项目。
选择"集成"然后"谷歌的行动"。如果您还没有打开它,请将其打开。
点击"登录欢迎意图和#34;复选框。
处理您的webhook中的内容
完成所有设置后,处理webhook中的内容非常简单!您可以通过以下两种方式之一获取OAuth访问令牌:
如果您正在使用JavaScript库,请致电app.getUser().authToken
如果您正在查看JSON正文,则它位于originalRequest.data.user.accessToken
您将使用此访问令牌使用其他地方定义的方法对Google的API端点进行调用。
您不需要刷新令牌 - 除非用户已撤销访问权限,否则助理应向您提供有效的访问令牌。
答案 1 :(得分:0)
如果您使用Google登录作为登录提供商,则可以请求访问日历范围,作为OAuth流程的一部分。
https://docs.perl6.org/type/Rat州:
"请勿从Google请求任何OAuth范围,除非用户使用Google登录登录您的服务。"