Tim*_*man 5 google-authentication oauth-2.0 actions-on-google
我目前正在尝试使用Google Home Action对Google帐户进行身份验证,并从凭据中检索授权码.我不想要访问令牌,而是授权代码.
我查看过此帖并发现Google已更新其政策,不再允许将自己的OAuth端点用于链接授权代码流的帐户:
使用OAuth实施帐户关联时,您必须拥有OAuth端点
话虽如此,
Pri*_*ner 15
目前通过Google帐户对用户进行身份验证的方法是使用Google Sign-In for Assistant.一旦他们登录您的操作,您将获得一个ID令牌,您可以对其进行解码以获取其Google ID,您可以使用该ID在数据存储区中查找其帐户以获取其访问/刷新令牌.
由于需要更多的范围,如果在助理的用户登录,并还没有连接到他们的帐户的范围,你会重定向到一个基于网络的登录页面,他们可以登录使用谷歌登录功能与你需要的范围.在这种情况下,当他们通过Web登录并授权访问时,您将获得auth代码,您需要交换auth代码并刷新令牌并存储这些代码.
您无需为此创建自己的OAuth端点,但您需要做一些额外的工作,以确保在必要时将其重定向到您的网站以进行授权.
您只有在登录并授权您时才会获得一次身份验证代码.您需要将此交换为auth并刷新令牌,然后存储这些令牌.
更新以更好地解释事情.
看看架构,我们看到它有一些组件.在我们完成流程时,我们将详细介绍每个细节:
您有某种数据存储,您将为用户存储Auth Token和Refresh Token.我将假设您使用Google的用户ID作为此数据存储的索引.
在这种情况下,"Google用户ID"是指Google为每个帐户分配的唯一数字标识符.这通常表示为字符串,尽管只有数字,因为它通常比大多数数字类型长得多.在ID令牌中,这是"子"声明.
理论上,您可以使用ID令牌中的声明中提供的其他标识符,例如其电子邮件地址.遗憾的是,并非所有这些字段都可用 - 只保证"sub".
您有一个Web服务器,它有一些重要的URL用于我们的目的:
Google智能助理,可能在Google Home或移动设备上运行.我们还假设用户将能够访问浏览器以查看他们授权的内容.
您将使用的Google服务,包括Google的OAuth服务
让我们从用户之前登录并授权我们代表他们访问服务的情况开始.我们在数据存储中拥有Auth Token和Refresh Token,并根据其Google用户ID编制索引.这是一个简单的案例,但它有助于我们理解所有数据如何进入的更复杂的情况.
数据流看起来像这样:
容易,对吗?但是,如果用户之前从未使用过助手与我们的行动交谈怎么办?并且从未授权我们访问他们的Google服务,因此我们没有他们的令牌?那个流看起来更像是这样的:
他们现在可以做什么,并且它的行为与早期的简单场景一样.
这看起来很复杂,但事实证明我们可以在某些情况下删除一些步骤.如果谷歌云计算项目是您使用为您的行动,以及基于网络的谷歌登录功能,那么一旦他们授权在网络上的项目相同的项目,你完成所有通话将包括身份标记.这让我们删除了上面的步骤2-6,所以看起来更像是这样:
值得注意的是,如果他们在尝试使用助手版本之前访问网站(即 - 因为搜索结果或他们从第二个图表中的第8步开始或从第三个图表中的4个开始)并登录,那么我们将在他们第一次通过智能助理访问我们时获得他们的身份令牌,这将像简单的场景一样工作.
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |