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

授权错误,错误400:重定向\u uri\u Gmail API不匹配

翟鸿振
2023-03-14

我遵循这个Ruby Gmail应用编程接口快速入门指南来授权Gmail应用编程接口的用户。我在谷歌控制台创建了一个网络应用程序类型的应用程序,并生成了它的credentials.json文件(并将其放在quickstart.rb旁边)。我已经向应用程序提供了一个redirect_uri,该应用程序在heroku上作为rails应用程序托管。网址的格式如下

https://myapp-api-heroku.com/my_redirect_endpoint

当我运行quickstart.rb时,它会在控制台显示以下消息

在浏览器中打开以下URL,并在授权后输入生成的代码:https://accounts.google.com/o/oauth2/auth?access_type=offline

在我打开浏览器中的链接后它会显示这个错误

请求中的重定向URI urn:ietf:wg:oauth:2.0:oob只能由本机应用程序的客户端ID使用。WEB客户端类型不允许使用该选项。您可以在以下位置为本机应用程序创建客户端ID:https://console.developers.google.com/apis/credentials/oauthclient

我已经在谷歌控制台的相应应用程序中注册了提供的重定向uri。我找不到导致这个问题的原因。我最终想从rails应用服务器调用这个Gmail API,但我无法继续。

共有1个答案

百里胜泫
2023-03-14

auth有几种类型,让我们看看其中两种。第一个是web,它被设计为在web服务器上工作,授权被返回给WebService本身来处理它。第二个是已安装的应用程序,它会将响应返回给本地主机或发送reuqest的endpoint。

您正在关注的Ruby quick start代码在顶部指出,它被设计成一个控制台应用程序或已安装的应用程序,这就是为什么您会看到urn:ietf:wg:oauth:2.0:oob,也就是localhost

完成本页其余部分描述的步骤,创建一个简单的Ruby命令行应用程序,向Gmail API发出请求。

在你的例子中的代码是设计工作与安装的应用程序在那里为它的工作你需要创建安装的本地凭据在谷歌开发控制台你已经创建的web凭据将不与你使用的代码。

对于Web服务器应用程序,您应该遵循webauth

require 'google/apis/drive_v2'
require 'google/api_client/client_secrets'

client_secrets = Google::APIClient::ClientSecrets.load
auth_client = client_secrets.to_authorization
auth_client.update!(
  :scope => 'https://www.googleapis.com/auth/drive.metadata.readonly',
  :redirect_uri => 'http://www.example.com/oauth2callback',
  :additional_parameters => {
    "access_type" => "offline",         # offline access
    "include_granted_scopes" => "true"  # incremental auth
  }
)
 类似资料:
  • 我目前正试图通过Spring Security获得JWT访问令牌。 我不确定为什么凭据不匹配 数据库ˌ资料库 我的data.sql用户从h2-in-memory DB中取出,并Hibernate到一个使用UserDetailsService的对象中: 法典 我的安全配置 我的认证服务器配置 邮差 提交带有以下内容的邮递员请求时: 授权 基本认证 用户名:jwt-example 密码:[未加密的密码

  • 我们有Tomcat 9 Web服务器在生产中。我们面临的问题是,如果Tomcat收到任何格式错误的URL,我们希望显示我们应用程序的自定义错误页面,如下所示 http://URL/| 或 http://URL/[ 我在Tomcat应用服务器的web.xml中添加了错误页面标签,如下所示 我们在tomcat的webapps目录下的应用程序根文件夹中有error.html。 每当用户试图请求任何不存在

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:

  • 当我为Google OAuth请求使用以下URI时,我得到以下错误: “域与重定向\u uri/origin不匹配。错误代码:2”。 谁能告诉我我做错了什么? https://accounts.google.com/o/oauth2/auth?client_id=client_id_copied_from_the_developer_console

  • 当我的后端服务器向GCM服务器发送post请求时,我得到一个授权错误HTTP 401。 我按照这里描述的步骤: http://developer.android.com/google/gcm/http.html#auth_error 我明白了: 在故障排除中它说: 我对此有疑问: curl请求中的头是否正确 它们是指“api_key”(AIzaSy…)还是项目编号,如8305134 如何将我的服务