【问题标题】:How to get the Authorization and Token URL?如何获取授权和令牌 URL?
【发布时间】:2018-04-05 15:50:39
【问题描述】:

大约半年以来,我开始自己创建自己的代理,它可以帮助我和其他用户将他们的作业和词汇存储在 Firebase 中。现在我完成了除了在数据库中的存储之外的所有工作。

我没有完成构建 Firebase 存储功能的问题是我需要获取特定用户的用户 ID。有很多示例,例如:const userId = getUser().userId;,但我还读到 userId 可以在 30 天后和更改设备后更改。所以我决定用 Google 教程中的帐户链接来做这件事,但是第二步只是跳过了一些字段,如授权 url 或令牌 url,问题是我仍然不知道在这个字段中填写什么

我还看到了一些其他教程,他们从火力基地中获取了它。然后我打开 Firebase 并在 Firebase 身份验证选项卡中启用 google 帐户登录。在此之后,我转到设置中的服务帐户选项卡并单击 aon generate new private key 然后它下载了一个文件,但是在 Auth URI 点只有这个链接https://accounts.google.com/o/oauth2/auth 当我将链接粘贴到授权 URL 字段中时只是抛出错误“Google 帐户不能根据我们的帐户链接政策用作身份验证端点网址”。

这有什么问题吗?如何获得正确的授权 URL?

【问题讨论】:

  • 您需要实现 oauth 端点或使用 Auth0 等第三方服务。
  • 怎么做?对不起,我只是一个初学者:(
  • 您可能需要先选择 OAuth 提供者,然后再阅读他们的文档。

标签: actions-on-google dialogflow-es


【解决方案1】:

首先,匿名用户 ID 比您假设的要一致一些。它不会在 30 天后重置 - 只有在 30 天不使用后才会重置。它还可以在设备之间移植,因此相同的用户 ID 将用于相同的用户帐户进行相同的操作,无论他们是在手机上还是在与其帐户关联的扬声器上进行操作。

至于您尝试使用帐户链接做什么 - 它没有任何“错误” - 除了根据 Account Linking policy 部分声明它不能用作 OAuth 端点

使用 OAuth 实现帐户链接时,您必须拥有自己的 OAuth 端点或通过 OAuth 服务提供商对其进行控制。

这意味着您需要实现自己的 OAuth 端点或使用 OAuth 服务提供者,例如 Auth0。 Google 的 OAuth 实施不允许您控制端点,因此它不是 Google 助理的有效 OAuth 服务提供者。

如果您实现自己的 OAuth 服务,可以参考 Google 要求您实现的 minimal instructions 集合。在这些步骤中,您将使用 Firebase 身份验证让您的用户授权访问 Google 助理。您还将创建两个端点作为该服务的一部分 - 所以我们无法告诉您这些端点应该是什么。

【讨论】:

    【解决方案2】:

    用户 ID 不可靠。您将始终获得随机生成的用户 ID。事实上,您很可能会在与某人的同一对话中获得一个随机生成的用户 ID。当设备无法识别语音时,它会发送一个随机用户 ID。试试这个... 与你的设备对话,然后走到房间的另一边对它大喊大叫。是的...不同的用户 ID,它无法识别您的声音。更糟糕的是,如果用户没有训练它,无论发生什么,它都是一个随机的用户 ID。在 1 点,我每小时得到大约 2k 隐含发现,其中超过一半是随机的。不要相信用户 ID。任何认为它有效的人都没有意识到他们收到了来自完全相同的人的大部分随机请求。

    好的,如果您实际上不需要“帐户”但需要唯一标识用户,该怎么办。我所做的是设置了一个隐式的誓言帐户链接。这听起来可能令人生畏,但实际上非常简单。您所需要的只是一个网页/端点,它将接受来自 Google 的 GET 请求(带有一些查询字符串参数)。然后,您将生成一个 GUID,并使用 accessToken 中的 GUID 将请求重定向回 Google。然后,您收到的每个执行请求都将拥有您生成的 accessToken 并且行为完全符合您的要求,没有随机化,没有过期,而且它很漂亮(如果只有 Google 会像对待 accessToken 一样对待用户 ID,那么您就不会了)不必这样做)。唯一的缺点是它需要用户点击应用程序中的按钮。

    这是我的操作的链接。单击“链接”,您可以看到它做到了。 https://assistant.google.com/services/a/id/7f0a927706286d9c/

    这里还有隐式链接: https://developers.google.com/actions/identity/oauth2-implicit-flow

    【讨论】:

    • 这已经有所改变......使用 userStorage 它已经比 userID 有所改进。您可以使用用户存储。我建议您处理无法识别语音的情况。因此,如果您看到一个空的 userStorage,您应该返回类似...的消息。“看起来这是第一次使用 。如果这不正确,请确保您的声音在设备上进行了训练。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2021-01-19
    • 2016-11-29
    • 2021-04-07
    • 2019-02-08
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多