2

当用户已经同意应用程序时(例如,当用户在初次尝试期间放弃创建帐户,然后再次尝试),除非prompt=consent通过,否则 Google 不会再次提示同意(请参阅文档)。在没有提示同意的情况下,Google 不会向调用服务器提供刷新令牌。如果没有刷新令牌,服务器就无法与用户的资源交互(例如代表用户发送电子邮件)。

ueberauth_google有一个设置机制approval_prompt,但这是一个不同的参数prompt。有没有办法prompt=consent使用 ueberauth_google 发送?(注意,如果我添加%26prompt%3Dconsent到 ueberauth_google 发送给我的 url,那么 Google 会提示我并且我们的服务器会收到刷新令牌。)

4

1 回答 1

1

在您的 config.exs 上,您需要添加提示:“同意”

config :ueberauth, Ueberauth,
  providers: [
    google:
      {Ueberauth.Strategy.Google,
       [
         access_type: "offline",
         prompt: "consent",
         default_scope:
           "https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/userinfo.profile"
       ]}
  ]

但这尚未合并到 ueberauth_google。暂时你可以去你的:deps/ueberauth_google/lib/ueberauth/strategy/google.ex

并手动编辑这一行

在此处输入图像描述

于 2018-08-29T04:35:40.660 回答