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

谷歌API oauth无效

麻烨
2023-03-14

我的应用程序中有一个刷新令牌问题,我不知道如何解决它。我看过很多关于它的帖子,但我仍然需要一些帮助。我使用的授权码基本上是快速启动码。

private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens";

protected final Credential authorize(final List<String> SCOPES) throws IOException, GeneralSecurityException {
    final InputStream in = GoogleAPI.class.getResourceAsStream("/credentials.json");
    final GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
    final GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow
            .Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, clientSecrets, SCOPES)
            .setDataStoreFactory(new FileDataStoreFactory(new File(TOKENS_DIRECTORY_PATH)))
            .setAccessType("offline")
            .build();
    final LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(9000).build();
    return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
}

直到谷歌开始响应HTTP 400错误请求的那一天,上述功能一直运行良好,并显示以下消息

{“error”:“invalid_grant”,“error_description”:“令牌已过期或吊销。”}

我浏览了Google OAuth发布的“invalid_grant”噩梦——如何修复它,我尝试删除凭证并创建一个新凭证。我还尝试在本地删除令牌,但没有成功。

我错过了什么?

共有1个答案

孙宏壮
2023-03-14

令牌已过期或被吊销

可能是由一些事情引起的,这两种情况都源于您正在脱机使用并请求刷新令牌的事实。

刷新令牌由应用程序用于在访问令牌过期时请求新的访问令牌。

您似乎正在TOKENS_DIRECTORY_PATH中存储“用户”的凭据,如果您想去看看,应该有一个包含“用户”凭据的文件。

在该文件中,您应该找到一个刷新令牌,错误消息表明它已过期或已被重新使用。

如果用户去谷歌搜索他们的谷歌档案,他们可以撤销你的应用程序访问权限。这将导致错误消息。

另一种可能性是您已经请求了许多刷新令牌。当你的应用程序运行和用户授权你的应用程序时,你会得到一个刷新令牌,如果他们再次这样做,你会得到另一个刷新令牌两者都将工作。50岁以后,谷歌将如何过期最老的一个。

因此,您需要确保始终为用户使用最新的刷新令牌,而不是使用旧令牌运行。

 类似资料:
  • 介绍如何在谷歌云平台获取在云联壹云平台需要使用的配置参数。 如何获取谷歌云服务帐号密钥信息? 纳管指定项目 打开“GCP Console中的IAM和管理-IAM页面”页面并登录。 单击顶部“选择项目”,选择需要授权的项目。 在左侧导航栏中选择“服务账号”,进入指定项目的服务账号页面。 单击 “创建服务账号” 按钮,进入创建服务账号页面。 配置服务账号名称、服务账号ID、服务账号说明等,单击 “创建

  • 我有一个旧的谷歌云项目,我就是不能删除。 当我通过网站这样做时,我会得到一个“项目服务未知错误跟踪号码:342342354345” 当我使用命令通过CLI执行此操作时: gcloud项目删除“项目” 我得到一个错误: 错误:(gcloud.projects.delete)失败\u前提条件:前提条件检查失败。 “@type”:类型。古格里皮斯。com/谷歌。rpc。资源信息 资源名称:项目/7777

  • 我尝试使用my console在谷歌云平台上部署云功能。我使用的命令是, 但我得到了这个错误, 错误:(gcloud.functions.deploy)操作错误:代码=3,消息=Build failed:无法解析存储源:googleapi:错误404:未找到,未找到 我试着在谷歌上搜索,但似乎以前没有人遇到过这个错误消息。我也尝试过改变项目,部署效果很好。 如果有人知道是什么导致了这个错误,以及我

  • 我知道可以使用谷歌API视觉在网上找到类似的图片。我的目标是根据我的图像数据库找到类似的图像。我不想在网上看到类似的图片。 可能吗? 如果是,你能给我一些链接或建议吗? 谢谢

  • 我尝试过将deendpoint与云SQL和Hibernate集成。但是,每次都有错误。跟随我的测试: 1 -源文件夹中的persistence . XML:http://imgur.com/hKjf8Cs给我错误:http://imgur.com/QJe8rvq 2-资源文件夹中的persistence.xml给我错误: ServletInitializationParameters.java:5