尽管提示没有任何价值,但谷歌身份验证始终要求授权

2024-03-01

从 Google OAuth 连接用户后,当该用户希望在需要选择其 Google 帐户的下一个会话期间重新连接时,将再次请求许可。

根据文档 https://developers.google.com/identity/protocols/OpenIDConnect#prompt,参数的行为prompt负责授权请求的如下:

如果未指定值且用户之前未授权 访问,然后向用户显示同意屏幕。

因此,用户不必重新订购他的同意(经过验证,该应用程序存在于我的授权中)。

设想的唯一答案是这个问题的答案:使用谷歌登录总是征求用户同意 https://stackoverflow.com/questions/14923799/login-with-google-always-asks-user-consent

因为我也在没有安全 HTTP 的情况下在本地工作,但他假设存在 cookie 策略,但事实并非如此。

代码生成URL

/**
 * Create a new OAuth2Client with the credentials previously loads
 */
private getOAuth2() : OAuth2Client {
    return new OAuth2(
        this.credentials.client_secret,
        this.credentials.client_id,
        this.credentials.redirect_uris[0]
    );
}

/**
 * Create connection URL for the given scopes
 * @param scopes
 */
public url(scopes: Array<string>) : string {
    return this.client.generateAuthUrl({
            access_type: "offline",
            scope: scopes
    });
}



// The scope used to generate URL is 'https://www.googleapis.com/auth/youtube.readonly'

// this.client refer to a client which is load by getOAuth2
// and use only for the generation of URL's.

当用户第二次登录时,要获取已丢失的刷新令牌,不需要再次给予同意:

这就是出现的问题。


TBH,我没有清楚地理解你的问题。但是,我确信您必须处理两个不同的令牌。由于它是 OAuth,因此在成功进行用户身份验证后,首先您将获得来自 Google 的访问令牌。

您应该使用该访问令牌从 Google 获取用户信息。但默认情况下,访问令牌有一定的过期时间,超过该时间用户必须重新授权您的应用程序。我怀疑这就是你的情况。

您可以通过使用刷新令牌来更新您的访问令牌,在获得用户同意后您将获得该令牌。

您可以在我写的这篇博文中获得详细信息,https://www.syncwithtech.org/authorizing-google-apis/ https://www.syncwithtech.org/authorizing-google-apis/

我希望这可以在某种程度上帮助您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽管提示没有任何价值,但谷歌身份验证始终要求授权 的相关文章

随机推荐

  • 如何更改 wcf 客户端中的时间戳安全标头?

    我正在尝试修改安全标头的默认过期时间 即 5 分钟到 1 分钟 服务器的安全策略之一是时间戳 请求的日期 生存时间为一分钟 任何想法 我尝试创建自定义绑定但没有成功
  • ActiveAdmin 中的格式提示问题(不需要的对象 ID 输出)

    当我使用 formattastic DSL 进行 ActiveAdmin 编辑表单时 我得到以下输出 0x00000006bd1018 gt 图片标签 gt 为什么这从 obj inspect 的结果开始以及如何删除这部分 导致此错误的代码
  • 如何正确使用范围 https://www.googleapis.com/auth/drive.file

    我尝试使用以下代码访问我的 Google 云端硬盘中的 Google 表格文件 import gspread from oauth2client service account import ServiceAccountCredential
  • 我的 UITableViewController 中的内存泄漏在哪里?

    表视图工作正常 但是当我离开视图并第二次返回时 出现内存泄漏 可能 viewDidLoad 中的某些内容不确定 我正在运行泄漏工具并收到以下通知 Leaked Object Address Size Responsible Library
  • 在PyQt中,如何将终端嵌入到窗口中?

    我有一个小脚本 旨在将 xterm 嵌入 PyQt GUI 中 在 Linux 上 它可以工作 创建一个如下所示的 GUI 然而 在 OS X 上运行相同的脚本会产生两个如下所示的窗口 有谁知道如何解决这个问题并防止 OS X 搞砸 GUI
  • 我应该将变量保留为瞬态吗?

    我一直在尝试使用 Apache Spark 来解决一些查询 例如 top k skyline 等 我做了一个包装纸 其中包含SparkConf and JavaSparkContext named SparkContext 这个类也实现了可
  • 将标准输入和标准输出重定向到文件

    我目前是一个学校的助教C语言简介班级 该课程是使用 Visual Studio 进行教学的 但是在评分时 我只使用一个简单的 Windows 批处理脚本来处理所有提交的作业 编译它们 在测试文件上运行它们 并将输出重定向到我可以打印的一系列
  • ListView获取滚动位置?

    我正在使用 MergeAdapter 来自 Mark Murphy 的优秀项目系列 您可以将它与 ListView 一起使用 我试图在刷新时重建适配器的内容 而不是 就地 刷新并调用notifyDataSetChange 我想获取列表视图的
  • 在 R data.table 中,如何将变量参数传递给表达式?

    我遇到了一个 R 小问题data table 非常感谢您的帮助 我该怎么做呢 getResult lt function dt expr gby e lt substitute expr b lt substitute gby return
  • 使用 Excel VBA 重命名文件

    这就是我需要做的 我在 Excel 工作表中有这两列 带文件名 第一列包含当前文件名 第二列包含我想要将文件重命名为的名称 我需要使用它 因为重命名没有模式 例如 下面可能是一组文件 Current Name gt Rename To Ab
  • Scala中如何从内部类引用外部对象

    考虑这段代码 这是一种类型安全单元 abstract class UnitsZone type ConcreteUnit lt AbstractUnit abstract class AbstractUnit val qty Int SOM
  • simplexml_load_file 不起作用

    我下面有这段代码 它在我的远程托管服务器上运行良好 但由于某种原因不能在我的本地 Linux 机器上运行 我也尝试使用 file get contents 来获得宁静的服务 但它也返回 false 有谁知道为什么会发生这种情况 谢谢 xml
  • 使用“devtools::install_github”和克隆 GitHub 存储库有什么区别?

    I used devtools install github 在 R 中安装存储库 并使用以下命令安装了存储库git clone在终端 这两条路线有什么区别 到目前为止 我明白我可以使用library package 在 R 中 并将加载该
  • Angular 5中如何从父组件继承子组件中的CSS样式

    我有一个父组件 其中有一个子组件 父组件有一些 css 类 子组件扩展了它们 我尝试使用 host 查看文档 但似乎无法使其正常工作 子组件 div class table row body div class table cell bod
  • 对指针数组进行排序

    我是否正确地认为 为了对指针数组进行排序 将指针视为 int 是可以的 例如 qsort ptrs n sizeof void int cmp 我想对 ptr 进行排序以确定是否存在重复项 而不管指针指向的类型是什么 因此 qsort 是执
  • 如何调用shell脚本来启动后端Java进程?

    完成 Jenkins 任务后 我使用 Jenkins 的后置条件配置部分执行 Linux shell 脚本 这个 Linux shell 脚本想要在后端启动备用服务 并且不能导致 Jenkins 暂停 我尝试使用 nohup 等 但不起作用
  • 3D 数组作为纹理在 CUDA 中写入和读取

    由于我正在编程的算法的性质 我需要用一些特定的数学写入 填充 3D 矩阵 然后从该矩阵 在单独的内核中 读取作为 3D 线性插值纹理 由于纹理是一种读取模式 我假设我可以以某种方式在绑定到纹理的全局内存中写入 并从中单独读取 而不需要双倍内
  • 如何制作一个在主线程中触发事件的 C# 计时器?

    长话短说 我需要 Net 中的一个精确计时器 精度以毫秒为单位 这意味着 如果我告诉它在 10 毫秒过去时触发一个事件 它必须这样做 1 毫秒 内置的 Net Timer 类的精度似乎为 16ms 这对于我的应用程序来说是不可接受的 我找到
  • 避免使用元类继承生成的类属性

    我正在考虑使用元类自动将子类添加到父类以进行 链接 然而 从父类继承这些属性会把事情搞砸 有什么好的方法可以避免这种情况吗 class MetaError type def init cls name bases attrs for bas
  • 尽管提示没有任何价值,但谷歌身份验证始终要求授权

    从 Google OAuth 连接用户后 当该用户希望在需要选择其 Google 帐户的下一个会话期间重新连接时 将再次请求许可 根据文档 https developers google com identity protocols Ope