mfu*_*ica 8 google-authentication google-oauth actions-on-google dialogflow-es
我已经向Google Dev Advocate寻求帮助,因为我正在努力在我的Google Actions应用上实施帐户关联,他向我发送了一篇文档链接,该文章已经阅读并建议我也咨询Stackoverflow.我已经完成了第二个建议,并努力找到我的问题的确切答案,我已经在这里链接到doc文章,添加我的所有查询并将其发送回Dev Advocate,希望得到更多的澄清特别是提醒一下,关于该主题的完整新手可以阅读文档,并且不应该给予任何理由.
这篇文章我指的是https://developers.google.com/actions/identity/account-linking
我的疑问如下:
使用OAuth实施帐户关联时,您必须拥有OAuth端点
所以我现在对应该放在Aiuthorization URL和Token URL中的内容非常困惑 - 为什么不以更基本和清晰的方式记录这些内容?我还读过它需要通过HTTPS提供服务,如果您正在本地和宠物项目上工作,这不是商业性的,您将无法支付HTTPS费用?
如果您的应用支持无缝帐户关联
将以下重定向URI列入白名单:https://oauth-redirect.googleusercontent.com/r/
在展开的OAuth 2.0表单中,使用您的OAuth 2.0客户端配置填写字段.填写范围时,请确保它们以空格分隔.
打开Google应用,然后转到"发现"标签.
调用您的应用.由于这是第一次使用您的Google帐户调用该应用,因此助理会通知您必须关联您的帐户.
除了这些问题,我还有以下内容:
谢谢,请记住文档应该适合每个人!
Pri*_*ner 26
文档适用于所有开发人员.但是,请记住,作为开发人员,某些任务可能需要您学习比您目前所知更多的知识.来到SO是实现这一目标的方法之一,但还有许多其他途径可以补充这一点.
然而,良好的原始文档确实有帮助.谷歌的文档目前还不错 - 它们曾经很糟糕.
更新 - 在我们开始之前,让我回答您建议的问题,但实际上并没有问.
为什么我需要OAuth服务器?
首先 - 你没有.
将您的服务视为网站,将智能视为浏览器.对于许多网站,他们不需要知道用户是谁以使用该网站.没有用户帐户,网站可以做很多事情.
在某些情况下,了解访问您网站的用户之前访问过您是很有用的.通常,您将使用cookie来跟踪这样的用户.
助手与此相当,虽然略有不同.智能助理会向您发送匿名用户ID以及每条消息.此UserID仅适用于此用户和您的操作 - 它不会重复用于任何其他操作或任何其他用户.因此,如果您跟踪它,您将知道用户何时返回.像cookie一样,用户可以重置或清除它,但在大多数情况下,这是持久的.
但有时,您可能需要一个人登录您网站上的帐户.这就是OAuth服务器要实现的目标 - 为用户提供登录Action的方法.OAuth是让人们最近登录服务的一种非常标准的方式,尽管其目的是授权客户代表您行事.
后者实际上是OAuth在这种情况下正在做的事情 - 您的用户授权助理在与您的操作交谈时代表用户行事.
(更新 - 现在有办法避免在某些情况下完全设置OAuth服务器.请参阅本答复底部的更新.)
现在回到你的问题
但是......让我们回答你的问题.
隐式代码流和授权代码流之间有什么区别.
这两个术语由OAuth2标准更加谨慎地定义,但简而言之 - 它们都让客户端(远程服务器 - 在这种情况下是助手)让用户在您的服务器上提供某些权限.
Implicit流程更简单,包括您需要设置的内容和两个服务器交换的内容,但假设一旦您发出令牌,它就无限期有效.这带来了一个稍高的风险,有人可以获得此令牌并使用它来模拟助理.
Auth Code流程更复杂(尽管不是很多),并以多种方式解决风险.一种方法是某些事务是服务器到服务器完成的,而不是包括客户端,并且这些事务包括共享密钥.另一种方式是,身份验证令牌的生命周期有限,因此曝光窗口有限,但有一个刷新令牌可用于获取新的身份验证令牌.
在文章"授权代码"中选择,为什么?
最有可能的原因是它对于最低水平的额外工作更安全.然而,它所解决的大多数安全问题在更加开放的环境中最为明显,例如浏览器和移动设备 - 它们在助手方面的风险并不大.但是,对于需要设置auth服务器的地方,使用更安全的路由在其他方面也有好处.
大多数Google API使用Auth Code流程或其变体.(虽然大多数使用它来自客户端 - 而不是服务器端.这是行动的帐户链接所需要的.)
虽然我在Stackoverflow上找到了获取客户端ID和密码的地方,但您认为在文章中添加链接不是很好吗?
嗯...除了SO答案不再有效.(并且,显然,从来没有打算有效.)正如您在下一个问题中提到的,Google已经澄清了他们的政策,要求您拥有用于操作的OAuth端点.此外,他们还进行了技术更改,阻止您使用Google的终端.(我已经更新了答案,这样说.)
虽然"配置云项目"部分是正确的,并且描述了如何设置要与Calendar API一起使用的凭据,但您无法使用Google的OAuth端点为您自己的项目执行身份验证.
所以我现在对应该放在授权URL和令牌URL中的内容感到非常困惑 - 为什么不以更基本和清晰的方式记录这些内容?
因为这是他们在文档中做出不太清楚的假设的一点.建议您在" 步骤1.配置服务器 "中说明您拥有OAuth服务器.如果您已经有OAuth服务器,那么您应该知道服务器的授权和令牌URL是什么.
但是,如果不这样做,则可以进一步说明确定您正在创建的OAuth服务的端点的位置.
我还读过它需要通过HTTPS提供服务,如果您正在本地和宠物项目上工作,这不是商业性的,您将无法支付HTTPS费用?
是的,它必须是HTTPS.这是OAuth的要求,也是您发送可用于执行用户授权的令牌的良好做法.听起来您希望能够向Google服务器发出API调用,如果这些令牌被取消(或者可能用于访问相同资源的令牌),那么您的Google帐户可能会受到损害.
您可以在这里为本地或宠物项目开发提供很多选择.仅举几个:
您可以使用Firebase功能.对于"宠物"级别的项目,他们是免费的.(如果你的行动有点受欢迎,Google智能助理会为你提供应该支付适度使用费用的积分.)
您可以使用Let's Encrypt免费获取服务器的SSL证书.
由于您的服务器必须具有公共地址,因此您可以使用ngrok创建隧道,该隧道还提供您可以使用的公共HTTPS地址.一旦您的项目退出"个人测试"阶段,这可能并不好,但这是一个很好的工具.
当然还有其他方法,但这些是您可以根据需要使用的一些好工具.
什么是无缝帐户链接,为什么不解释和记录?
它是.除了文档之外,他们还将其称为"简化身份流".
在" 帐户关联概述"页面上,它显示"有关详细信息,请参阅简化的标识流,了解如何配置OAuth服务器以支持Google智能助理上的无缝身份体验."
这将带您进入一个页面,讨论此流如何构建在其他两个身份流之上,并有一些额外的要求,但应该让用户的体验更好.
但是......不要太担心这个.如果你只是为了好玩而这样做,那么正常的身份流并不是那么大的负担.如果您正在为商业产品执行此操作 - 首先使正常流程正常工作.
我们应该在哪里列入白名单?将以下重定向URI列入白名单:https://oauth-redirect.googleusercontent.com/r/
这是OAuth的基本概念之一 - 作为客户端服务器和服务器之间通信的一部分,当您完成对用户的身份验证并获得发布令牌的权限时,它会指示重定向到特定的URL.
OAuth规范要求您将该重定向URL与已为该客户端设置的URL进行比较.它没有指定你如何设置它.所以谷歌说"当你为我们的客户设置OAuth服务器时 - 这是我们要求你重定向到的URL."
除了"在您的OAuth服务器中"之外,Google无法回答将此列入白名单的位置.大多数OAuth服务器都有一种配置多个客户端的方法,这是您为该客户端设置的值之一.(ClientID和ClientSecret是其他值,但Google允许您确定这些值并将其作为操作控制台中帐户链接配置的一部分.这是您的下一个问题.)
您的OAuth 2.0客户端配置详细信息是什么?他们在哪里可以找到?
再次,这取决于您的OAuth服务器和你的什么要求,你想,当他们尝试登录到您的服务器,以提示用户.ClientID和ClientSecret是两个这样的参数."助理"应请求访问的OAuth范围是其他参数.但这取决于您 - 因为它是您尝试访问的服务器.
我没有在Oneplus 3T Google App上看到Discovery选项卡,我还能在哪里找到它?
该文档看起来不正确.我认为应该说您应该在移动设备上打开Google Home应用.
它也可能意味着谷歌应用程序,在这种情况下,您的手机可能不支持Google智能助理作为谷歌应用程序的一部分.如有必要,您可以单独下载Google智能助理.
但是 - 最初使用模拟器进行测试.虽然它需要一些手动步骤,但它们易于遵循并帮助您跟踪事物.
这就是我被卡住的地方 - 就像Stackoverflow上的许多其他人我得到的"该帐户尚未链接"错误.也许解决上述问题将解决帐户链接错误?
好吧,您的帐户尚未关联.{:
听起来你还没有为你的Action设置一个auth服务器.在你让auth服务器工作之前,其余部分都不会起作用.
我想访问用户日历和用户基本信息,所以我添加了个人资料,电子邮件和https://www.googleapis.com/auth/calendar你能确认这些是正确的吗?
首先,请记住,整个过程是将用户的智能助理帐户与您服务上的帐户相关联.您可能在其帐户(在您的服务中)中拥有用于执行操作的信息,例如访问Google资源或访问您了解的有关它们的其他信息.
这并非直接导致您访问他们用于与智能助理对话的Google帐户.
要获得用户在Google服务器上访问其资源的权限,您需要让他们授权您的服务器访问该服务器.这是使用OAuth再次完成的,但这次你是客户端.用户需要转到您的服务器,您将其重定向到Google的服务器以授权您,并且他们将被重定向回您的服务器,其中包含您需要存储的代码.这一切都在智能助理及其账户链接系统之外完成.
这就是说,你想要什么,profile并且email是相当正常的要求范围.该日历API文档确认https://www.googleapis.com/auth/calendar范围,你需要访问API的内容.(请记住,此URL不是您在浏览器中使用的URL,或者您要访问任何内容的URL - 它只是唯一标识的名称.)
更新以反映API更改.由于此答案最初是针对性的,因此Google推出了Google Sign In for Assistant,当您愿意将操作绑定到他们在智能助理上使用的相同Google帐户时,您可以避免设置自己的OAuth服务器.如果用户允许,您可以通过这种方式获取简单的用户配置文件信息,然后您可以利用它来访问其他API(再次,在用户的许可下).请参阅此SO答案,讨论如何使用它来访问Google的其他API.
谢谢,请记住文档应该适合每个人!
从我与谷歌的助理团队的谈话,他们正在寻找使文件更容易,希望他们会采取很多您的建议对心脏.我希望这些澄清能帮助你(以及其他遇到类似问题的人).
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |