大约半年后,我开始自己创建自己的代理,这可以帮助我和其他用户在Firebase中存储他们的作业和词汇。现在我完成了除数据库中的存储之外的所有操作。
我未完成构建Firebase存储功能的问题是我需要获取特定用户的用户ID。有许多样本,例如:const userId = getUser().userId;
,但我也读到userId可以在30天后更改设备后更改。因此,我决定使用来自Google on Actions的帐户链接进行此操作,但第二步只是跳过了某些字段,如授权网址或令牌网址,问题是我仍然不知道填写此字段的内容
我还看到了其他一些教程,他们从firebase中获取了它。然后我打开了Firebase并启用了Firebase身份验证标签中的Google帐户登录功能。在此之后,我转到设置中的服务帐户选项卡,然后单击aon生成新的私钥,然后它下载了一个文件,但在Auth URI点上只有这个链接https://accounts.google.com/o/oauth2/auth,当我将链接粘贴到授权URL该字段只会引发错误" 根据我们的帐户关联政策 Google帐户不能用作Auth端点网址"。
它有什么问题吗?如何获得正确的授权URL?
答案 0 :(得分:0)
首先,匿名用户ID比您假设的更加一致。 30天后不会重置 - 仅在30天不使用后重置。它也可以在设备之间移植,因此相同的用户ID将用于相同的用户帐户,无论他们是在手机上还是在与其帐户关联的扬声器上进行操作。
至于您尝试使用帐户关联做什么 - 没有什么"错误"使用它 - 除了它不能用作OA Account Linking policy的OAuth端点,部分
使用OAuth实施帐户关联时,您必须拥有OAuth端点或通过OAuth服务提供商控制它。
这意味着您需要实施自己的OAuth端点或使用OAuth服务提供商,例如Auth0。 Google的OAuth实施不允许您控制端点,因此它不是Google智能助理的有效OAuth服务提供商。
如果您实施自己的OAuth服务,可以参考Google要求您实施的minimal instructions套。在这些步骤中,您将使用Firebase身份验证让您的用户授权访问Google智能助理。您还可以创建两个端点作为此服务的一部分 - 因此我们无法告诉您这些端点应该是什么。
答案 1 :(得分:0)
userID不可靠。您将始终获得随机生成的用户ID。实际上,您可能会在与人进行的同一次对话中获得随机生成的用户ID。当设备无法识别语音时,它会发送随机用户ID。试试这个......和你的设备对话,然后去房间的另一边大喊大叫。是的...不同的用户ID,它无法识别您的声音。更糟糕的是,如果用户没有训练它,无论发生什么,它都是随机的用户ID。我在1点钟每小时得到大约2k个隐含发现,其中超过一半是随机发现的。不要信任用户ID。任何认为它有效的人都没有意识到他们从同一个人那里得到了很大一部分随机请求。
好的,那么如果您实际上不需要“帐户”该怎么办,但您需要唯一地识别用户。我做了什么,是我设置一个隐含的誓言帐户链接。这可能听起来令人生畏,但它实际上非常简单。您所需要的只是一个网页/端点,它将接受来自Google的GET请求(带有一些查询字符串参数)。然后,您将生成GUID,并使用accessToken中的GUID将请求重定向回Google。然后,您收到的每个请求都将生成您生成的accessToken,其行为与您想要的完全一致,没有随机化,没有过期,而且它很漂亮(如果只有Google会像处理访问权限一样处理用户ID,那么你就不会必须这样做)。唯一的缺点是它需要用户点击应用程序中的按钮。
以下是我的操作的链接。点击“链接”,你可以看到它做到了。 https://assistant.google.com/services/a/id/7f0a927706286d9c/
隐式链接在这里: https://developers.google.com/actions/identity/oauth2-implicit-flow