5

我想使用此处记录的 Google Actions 接收用户电子邮件,但文档谈论 EMAIL 权限,但是当我在这里阅读权限文档时,我找不到任何 EMAIL 权限。有什么帮助吗?如何接收用户电子邮件?

4

3 回答 3

7

这是有效的,您可以通过帐户链接来做到这一点。

我们必须首先启用 webhook,我们可以在对话流实现文档中查看如何启用 webhook 如果我们要使用 Google Assistant,那么我们必须首先在集成中启用 Google Assistant Integration。然后按照下面提到的步骤在 google 上的操作中进行帐户链接:-

  1. 转到谷歌云控制台

    • 转到 API 和服务 -> 凭据 -> OAuth 2.0 客户端 ID -> Web 客户端
    • 从那里记下客户端 ID、客户端密码
    • 下载 JSON - 从 json 中记下项目 id、auth_uri、token_uri
    • goto 授权重定向 URI
    • 白名单我们的应用程序的 URL,在这个 URL 的固定部分是https://oauth-redirect.googleusercontent.com/r/[project-Id](将 [project-Id] 替换为您的项目 id)
    • 保存更改
  2. 转到 Google 上的操作 ( https://console.actions.google.com ) -> 帐户链接设置

  3. 在托管服务器日志中,我们可以看到访问令牌的值,通过访问令牌,我们可以获得有关电子邮件地址的详细信息。

  4. 将访问令牌附加到此链接“ https://www.googleapis.com/oauth2/v1/userinfo?access_token= ”,我们可以在生成的 json 页面中获取所需的详细信息。
  5. 写这段代码

    accessToken = req.get("originalRequest")
                     .get("data")
                     .get("user")
                     .get("accessToken")
    
    r = requests.get(link) // make get request to link
    
    print("Email Id: " + r.json()["email"])
    print("Name: " + r.json()["name"])
    
于 2018-04-05T10:00:04.497 回答
4

是的,不幸的是,助手的 SDK 没有给你电子邮件地址。但是,如果您实施帐户链接(如 Ahmed 提到的)并使用 Streamlined Flows,那么您将收到提供给您的电子邮件;您只需要使用 jsonwebtoken 库,就可以解码断言 JWT 并获取电子邮件地址。

话虽这么说,这发生在“登录”和令牌交换期间……而不是在实际操作执行期间。您需要发出刷新令牌/访问令牌:S

于 2017-06-08T14:23:31.650 回答
1

一种方法是使用帐户链接。我想知道如果没有电子邮件或帐户链接,您可能有哪些用例不一定能工作?

于 2017-05-30T22:20:59.587 回答