Google oauth2 api 客户端无法正常工作

2023-11-22

我的 grails 2.3.4 控制器的操作中有一些代码,它使用 google java 客户端库来访问 OAuth2 api。但是当我创建 GoogleAuthorizationCodeFlow 的实例时,我收到了 redirect_uri_mismatch 错误。谷歌给我的网址是这个http://localhost:60720/Callback,虽然我在 google api 控制台中定义了回调 url,如下所示http://localhost:8080/<myAppName>/<controllerName>/<actionName>。当我在地址栏中手动复制粘贴重定向网址并替换谷歌给我的网址时,我的应用程序运行良好。

我已将该应用程序注册为 Web 应用程序,而不是在 api 控制台中安装的应用程序。我能做些什么?请帮忙。如果我无法解决这个问题,那么我将恢复使用 REST Api。

ResourceLocator grailsResourceLocator



JsonFactory jsonFactory = JacksonFactory.defaultInstance

File clientSecretsFile = grailsResourceLocator.findResourceForURI("/configs/clientSecrets.json").file

GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory, new InputStreamReader(new FileInputStream(clientSecretsFile)))

HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport()

FileDataStoreFactory dataStoreFactory = new FileDataStoreFactory(new File(System.getProperty("user.home"), ".store/oauth2_sample"))

List<String> SCOPES = ["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"]

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, jsonFactory, clientSecrets, SCOPES).setDataStoreFactory(dataStoreFactory).build()

Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user")

Thanks.


好的,我找到了解决方案。

当你创建时new LocalServerReceiver()改用new LocalServerReceiver.Builder().setPort(9089).build()

在本例中我选择了一些空端口 9089。实际上LocalServerReceiver是一个监听google和google发送的http服务器code参数到此服务器。现在您所要做的就是在重定向 URI 中创建一个新条目,在本例中如下所示:http://localhost:9089/Callback。请注意,端口号与我在使用构建服务器时在代码中使用的端口号相同LocalServerReceiver.Builder() class.

瞧!你从谷歌获得了access_token和refresh_token。

快乐编码...快乐 Java 客户...

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

Google oauth2 api 客户端无法正常工作 的相关文章

随机推荐

  • GitLab 统计问题总数

    我想使用 api 统计我的 gitlab 项目上的所有问题 下面是我正在使用的命令 curl header PRIVATE TOKEN xxxxxxx https gitlab myapp com api v4 groups xx issu
  • 在 Typescript 项目中导入 Matter-js

    我找到了这个文件 https www npmjs com package types matter js 我执行这一行 npm install save types matter js 在根 ts 文件中我收到错误消息 Matter 指的是
  • 如何在 Jasper Report 中组织框架,使它们完美浮动?

    在 Jasper 报告中 我有 4 个框架 下图 它们设置了一些属性 如同一个图像中所示 现在 想法是给定某些参数showBlue and showRed框架BLUE and RED分别显示或隐藏 后续帧 浮动 在前一帧之后 考虑以下顺序
  • unordered_set 非常量迭代器

    出于测试目的 我创建了一些 unordered set 并尝试迭代该集合 该集合拥有自己的类 class Student private int matrNr string name public Student const int mat
  • 使用 React、Redux 和 Axios 处理异步请求?

    我是 React JS 和 Redux 的新手 这让我难以上手 我正在尝试使用 Axios 发出 POST 请求 但无法发出请求 可能是我在容器文件中丢失了一些东西 下面是代码 查看plnkr Update 提交后我收到 redux for
  • 将列表与公共元素合并

    我有一个清单 1 1 7 2 1 10 11 12 211 446 469 3 1 10 11 12 13 4 1 11 12 13 215 5 1 15 16 6 1 15 17 216 225 我想合并具有公共元素的列表切片 并索引已合
  • 红宝石浮点精度

    据我了解 Ruby 1 9 2 浮点数的精度为 15 位十进制数字 因此 我期望舍入浮动x精确到小数点后 15 位等于x 对于此计算 情况并非如此 x 0 33 10 x x round 15 gt false 顺便说一下 四舍五入到 16
  • 在 iOS7 GM 中收到 SSL 错误 - “AddTrust 外部 CA 根”不受信任?

    我的 NSURLConnection 类中突然收到来自 iOS7 GM 的 SSL 错误 我无法访问我的任何 API 或 webView 页面 这是一个严重的紧急情况 有人可以帮我吗 错误如下 NSURLConnection CFURLCo
  • 使用事件侦听器克隆引导元素

    我正在尝试克隆一个具有引导程序提供的数据切换行为的引导程序元素 HTML div class container div
  • 我需要帮助使用 MAT 查找内存泄漏

    我正在使用 MAT 来比较两个堆转储 我每天都会进行一次堆转储 它每天都会增加大约 200 兆 我认为泄漏与 java util zip 有关 因为该表显示的内容 也因为我们最近添加了一个新进程来压缩和解压缩大量文件 见图 此时我打开支配器
  • iPhone 上的 HTTP 直播流媒体服务器

    我正在尝试在 iPhone 上运行 HTTP 实时流媒体服务器 该服务器从摄像头捕获视频流并将其提供给 HTML5 客户端 支持 HTTP 实时流媒体 到目前为止 我已经完成了以下工作 iOS 上的 HTTP Live 流媒体服务器 用 N
  • Ext 4.1.1:添加新记录到Store

    我想在商店初始化后添加记录 I tried 加载数据 加载原始数据 add 但似乎没有任何作用 这是我的jsfiddle http jsfiddle net charlesbourasseau zVvLc 有任何想法吗 你需要设置query
  • novalidate 并出现错误 ora-02299

    有人可以帮我解决这个问题吗 id Name 1 aaa 2 bbb 3 aaa gt alter table arc add CONSTRAINT uk arc UNIQUE NAME novalidate error ora 02299
  • 控制 HTML5 视频中的开始位置和播放时长

    我们有一个视频 长 13 分钟 我们希望使用 HTML5 对其进行控制 我们希望能够让用户控制和选择他们想要播放的视频部分 优选地 该控制将通过2个输入字段进行 他们将在第一个框中输入开始时间 以秒为单位 并在第二个框中输入播放持续时间 以
  • Haxe 在 PHP 环境中部署的 Web“框架”?

    最近我一直在看Haxe 构建要部署到运行 PHP 的 Apache 的应用程序 好吧 虽然它看起来可能适合我的需求 部署到 PHP 但不使用糟糕的语言 但我还没有发现任何东西可以使实际应用程序开发比构建传统的非 MVC PHP 应用程序更容
  • Angular 构建:无法读取未定义的属性“split”

    刚刚从 ng8 升级到 ng11 当我运行 ngserve 时它工作正常 但是当我运行 build 进行生产时我收到以下错误 生成 ES5 包以进行差异加载 发生未处理的异常 C P src app 9 es2015 dce42a686e4
  • CUDA 10 不支持 7 之后的 Gcc 版本 - Arch Linux 中的 Qt 错误

    我正在运行 Arch Linux 并尝试在 Qt 中构建一个项目 但是 Qt 出现以下错误 opt cuda include crt host config h 129 错误 error 不支持的 GNU 版本 不支持 7 之后的 gcc
  • 以“TryParse”方式反序列化 json

    当我向某个服务 不属于我 发送请求时 它可能会响应所请求的 JSON 数据 或者响应如下所示的错误 error status error message code 999 在这两种情况下 HTTP 响应代码都是 200 OK 因此我无法使用
  • 带有 ViewPager 的 CollapsingToolbarLayout

    我正在尝试使用 CollapsingToolbarLayout 来创建一个带有 ViewPager 的可折叠工具栏 该工具栏在向上滚动时会逐渐消失 但如果 ViewPager 存在 我似乎会失去向上滚动的能力 ViewPager 应该在工具
  • Google oauth2 api 客户端无法正常工作

    我的 grails 2 3 4 控制器的操作中有一些代码 它使用 google java 客户端库来访问 OAuth2 api 但是当我创建 GoogleAuthorizationCodeFlow 的实例时 我收到了 redirect ur