对于Google/Firebase上的Actions,OAUTH2.0服务器应该在哪里



参考-https://developers.google.com/actions/identity/oauth2-code-flowIm使用Actions SDK,这意味着Im使用Firebase函数进行履行处理。

我在Firebase中根据从Android应用程序中的FirebaseUser.getUid()获得的UID存储信息。到目前为止还不错。

我已经设置了一个模拟OAuth2.0服务器,这似乎很乐意交换令牌。

然而,在随后的文件中,它指出:

"您的服务的API端点使用访问令牌来识别Google代表其进行API调用的用户,并验证Google是否有权代表用户访问端点。">

然而,我的成就在于Firebase函数。所以…

我需要获取FirebaseFunction才能从OAuth2.0服务器获取用户ID吗?我需要在Firebase函数中设置OAuth2.0服务器吗?OAuth2.0服务器位于何处?我如何让我的Firebase函数获得与Android报告的相同的用户ID?

首先,您从一个小的误解开始。谷歌和Actions SDK上的操作不需要Firebase函数来实现。Firebase函数do让它变得更容易-它们提供了webhook所需的可公开访问的HTTPS端点,但如果你有自己的服务器(具有有效的SSL证书),或者如果你想使用AWS Lambda或类似的东西,你当然可以这样做,所使用的JSON协议有文档记录(尽管有时并不清楚)。

回答您的问题:

如果你在你的webhook中需要UserID,那么是的,它需要某种方法来获得UserID,并将其交给访问令牌。但是如何做到这一点取决于如何实现OAuth服务器和令牌。例如:

  • 如果您使用签名的JTW作为令牌,那么UserID是JWT的一部分,您的webhook所需要做的就是提取它,并验证JWT上的签名和时间框架是否有效。您不需要联系任何其他服务器即可执行此操作。

  • 如果您将令牌和相应的用户信息存储在Firebase或其他数据库或数据存储中,只需从webhook中读取令牌即可!

  • 你当然可以创建另一个HTTPS端点,用来验证令牌并从中获取信息——例如,谷歌就是这么做的。

您的OAuth服务器不需要像您的webhook一样驻留在Firebase函数中。它可能是一个很好的居住场所(以及Firebase Hosting上的身份验证页面),但它不是必需的。

您的OAuth服务器可以。。。在任何地方好吧,不管怎样,只要有有效的SSL证书,就可以在互联网上的任何公共场所。

最后一点正是账户链接的意义所在。你需要确保,当他们对你的服务器进行身份验证时,你会得到"由Android报告"的UserID,无论这在你的上下文中意味着什么(但请参阅下面的更新)。一旦你有了这个UserID,你需要确保它与你为这个用户发布的任何令牌相关联,并且你需要为你的服务提供一种从令牌中获取这个UserID的方法。

你如何做到这一点取决于你的架构的其余部分以及你试图用它做什么。谷歌助手并不在乎-它有自己的UserId概念,它与你的UserId是分开的,所以要用你的UserId识别用户,你将使用它交给你的令牌。

更新

你在评论中提出了一个很好的观点,即"安卓设备上的用户ID也将与谷歌主页上的用户标识相同"。这是真的,但谈到了类似匿名cookie的UserID,它只能通过Assistant平台获得(这就是为什么它出现在匿名用户身份部分中)。它不会谈论你可以通过其他Android应用程序获得的任何ID。要将您通过其他应用程序获得的ID与助理的ID相关联,您需要使用下页所述的帐户链接。

如果您只需要一种一致的方式来跟踪多次访问您的Action的用户,并且您希望在任何Assistant平台(Google Home、Android Assistant或iOS Assistant)上保持一致,那么您只需要使用通过API/JSON提供的UserID。您不需要帐户链接或OAuth服务器。但这不是谷歌ID或Firebase ID,它是一个匿名用户ID,仅在助手平台上有效(然后,只有在特定条件下,如果用户不重置它)。

更新2要清楚OAuth和JWTs:

你在问题中问"我还能在哪里买到JWT?">

简而言之——你自己建造。

请记住,如果您正在提供OAuth服务器,那么您需要做的事情之一就是发布auth令牌和刷新令牌。这些令牌可以是你想要的任何东西——唯一的标准是你的webhook能够获取令牌,并以某种方式从中获得所需的信息,将其与用户联系起来。

但是首先要负责把这些信息放在那里。

因此,当用户在帐户链接期间登录时,您可以使用Firebase身份验证来登录他们。一旦您这样做了,您就可以为他们获得Firebase ID和/或Google ID。(毕竟,他们已经登录了你的OAuth网页——你必须了解他们。)

在他们登录后,你会将他们重定向到谷歌要求你去的某个地方,并且你会在其中包含一个令牌。该令牌可以是您正在创建的JWT,在该JWT中,您可以包含他们登录时的ID信息。

(再说一遍……它不一定是JWT。它可以是你想要的任何东西。唯一的要求是你能够验证它,并使用它来获得你需要的信息。)

相关内容

  • 没有找到相关文章

最新更新