当前位置: 首页 > 知识库问答 >
问题:

始终“离线访问”|Google OAuth 2

陆敏学
2023-03-14

我正在尝试使用Google OAuth2 api获取用户的配置文件。用户身份验证后,在同意页面上,我总是被要求“离线访问”

浏览器中的网址如下所示:-

https://accounts.google.com/o/oauth2/auth?scope=email

如上面的URL中可见,我已将范围参数传递为“电子邮件”

Google Auth API页面说:-

“此范围要求您的应用程序能够访问:

用户的Google帐户电子邮件地址。您可以通过调用people.get来访问电子邮件地址,它返回电子邮件数组(或通过调用people.getOpenIdConnect,它返回符合OIDC格式的电子邮件属性)。用户所属的Google Apps域的名称(如果有)。域名作为people.get的域属性(或getOpenIdConnect的hd属性)返回。此电子邮件范围等效并替换https://www.googleapis.com/auth/userinfo.email范围。”

为什么每次都要求我离线访问?

共有3个答案

郑承恩
2023-03-14

如果您使用的是节点js模块“每一个”,您可以通过以下方式覆盖googles默认值

.authQueryParam({ access_type:'online', approval_prompt:'auto' })
劳豪
2023-03-14

因为您正在重定向回超文本传输协议://localhost:/。这是有意义的,因为任何请求重定向到localhost的应用程序显然都在本地运行。

将其重定向到公共网址,它不会打扰您。

傅峰
2023-03-14

我也有同样的问题,在谷歌搜索了很长一段时间后,我发现了这个链接:

“这个应用程序想:离线访问”时access_type=在线

它建议删除redirect_uri中的“localhost ”,并且对我有效。

 类似资料:
  • 我试图使用VBScript和Oauth脱机访问谷歌日历API。我设法获得了一个刷新令牌和一个访问令牌,现在我想进入实际使用API的步骤,使用以下代码: 我得到的回应是: 即使访问令牌是有效的--如果我将sURL更改为https://www.googleapis.com/oauth2/v1/tokeninfo并运行该脚本,我将得到以下响应,显示一个有效的令牌: 如果我粘贴URL https://ww

  • 我正在使用<code>Microsoft.Owin.Security。Google(版本)middlware为我的应用程序提供Google OAuth。 它的配置如下: 非常简单的东西。我使用身份服务器作为MW来发出声明。 这是完全有意义的,因为我在URL中请求作用域: https://accounts.google.com/o/oauth2/auth?scope=openid简介邮件 然后我接受

  • 这是我之前问题的后续:如何从远程服务器访问Google Drive应用程序数据? 我有一个需要访问Google Drive AppFolder的应用程序,包括客户端(在线、JavaScript)和服务器端(离线、Python)。我的应用程序是独一无二的,因为客户端和服务器可能无法通过原始身份验证进行通信。 因此,我使用下面的代码来获取服务器的auth令牌(启动客户端): 服务器存储包括刷新令牌在内

  • 我正在尝试学习Spring Security性,所以我下载了一些示例项目,然后我尝试在我的项目中实现该解决方案。但当我尝试提交登录表单时,我总是得到403页,这是在applicationContext安全性中定义的。xml。但对于无效的用户名/密码,我期望的是“身份验证失败url”,对于正确的用户名/密码,期望的是“默认目标url”,而不是“拒绝访问处理程序”/“禁止访问”(我的403页)。如果有

  • 我正在尝试使用Google API获得<code>离线访问</code>。我必须从谷歌日历中提取数据,而无需用户每次登录。 我已将以下内容添加到我的 Gem 文件中: https://accounts.google.com/o/oauth2/auth?access_type=offline 我错过什么了吗?

  • 我试图在我的应用程序中使用Google Oauth2实现增量授权。 起初,当用户登录时,应用程序正在请求一些范围和脱机访问。我正在数据库中生成和存储刷新令牌,以便在需要时刷新访问令牌以进行API调用。 现在我要实现一个新功能,它将请求一个新的作用域,但我只想在用户尝试使用这个新功能时请求这个作用域。 我面临的问题是,当应用程序提示用户同意新范围时,谷歌正在请求访问所有以前接受的范围。 我尝试过不使