gpt4 book ai didi

java - 通过 Gmail Java API 刷新 token 时出现 400 错误请求

转载 作者:行者123 更新时间:2023-12-02 09:04:23 25 4
gpt4 key购买 nike

您好,我正在尝试在我的服务器上使用 Google 的 gmail api 实现发送/接收电子邮件:

private GoogleCredential authorize(HttpTransport httpTransport, JsonFactory jsonFactory ) {
try{
Resource resource = new ClassPathResource("my_key_in_json_format.");
InputStream input = resource.getInputStream();
GoogleCredential credential = GoogleCredential.fromStream(input);
credential.createScoped(GmailScopes.all());
credential.refreshToken();
return credential;
}catch(IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

但是当凭据尝试刷新 token 时,我遇到以下异常:

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
"error" : "invalid_scope",
"error_description" : "Bad Request"
}
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:394)
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:493)
at com.snobo.util.GmailService.authorize(GmailService.java:79)

我尝试将范围参数更改为:

Collection<String> SCOPES = Collections.unmodifiableCollection(Arrays.asList(new String[]{GmailScopes.GMAIL_READONLY}));

刷新 token 时也同样失败。 Google 的在线文档并不是真正对 Java 友好。有人遇到类似的问题吗?

最佳答案

经过搜索后,我根据此线程找到了问题的答案:

400 Bad Request on Gmail API with php

“如果您只想访问一个帐户(您自己的),则不应使用服务帐户。服务帐户是它们自己的帐户,而不是 Gmail 帐户。它们非常适合不需要用户(例如 map 、搜索)或当您使用 Google Apps for Work 域并希望为该域中的所有用户启用委派时(由域管理员执行,因此您不需要单独的用户授权)。”

我现在已经修改了我的实现以使用 oauth web flow。我对谷歌的文档感到非常失望,因为这个问题应该得到彻底且尽可能简洁的解决。我确信“服务帐户”和“域范围委托(delegate)”误导了许多开发人员将服务帐户方法用于多种类型的个人/个人帐户应用程序。

关于java - 通过 Gmail Java API 刷新 token 时出现 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59936305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com