首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试通过Google获取刷新令牌时获取invalid_scope

尝试通过Google获取刷新令牌时获取invalid_scope
EN

Stack Overflow用户
提问于 2020-02-25 18:27:40
回答 2查看 11.1K关注 0票数 10

我似乎无法利用Oauth的Google。我错过了什么?

错误消息:

代码语言:javascript
运行
复制
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
  "error" : "invalid_scope",
  "error_description" : "Invalid oauth scope or ID token audience provided."
}

Java代码:

私有空printLabels() {

代码语言:javascript
运行
复制
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

List<String> scopes = new ArrayList<>();
scopes.add(GmailScopes.GMAIL_LABELS);

GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("C:\\test\\credential.json"));
credential.createScoped(scopes);
credential.refreshToken();      // error happens here

String appName = "VS";
Gmail.Builder builder = new Gmail.Builder(httpTransport, jsonFactory, credential)
        .setApplicationName(appName);
Gmail gmail = builder.build();

Object o = gmail.users().labels().list("me").execute();
System.out.println("o = " + o);

}

Google配置:

登录到https://console.developers.google.com/

  • Created project

  • Enabled Gmail API

  • 创建的服务帐户(指定所有者role)

  • Download json凭据文件

  • 启用OAuth同意屏幕-内部(不确定我只想访问我的emails)

  • Enabled服务帐户域域)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-10 07:41:55

credential.createScoped(scopes)

返回具有给定作用域的凭据对象的副本。您可以通过credential.getServiceAccountScopes()验证这一点,并检查是否设置了范围。

尝试将值赋值给凭据对象,如。

代码语言:javascript
运行
复制
credential = credential.createScoped(scopes);
票数 7
EN

Stack Overflow用户

发布于 2022-11-24 14:48:29

在我的例子中,我遇到了使用Python获取默认凭据的问题。对于加载了gcloud auth application-default login或Kubernetes工作负载标识的凭据,它工作得很好。但是在GOOGLE_APPLICATION_CREDENTIALS中使用服务帐户文件时,我在试图调用credentials.refresh()时遇到了这个问题。我通过将scopes参数显式地提供给具有default()作用域的default()函数来解决这个问题。

所以我改变了主意:

代码语言:javascript
运行
复制
from google.auth import default

credentials, _ = default()

对此:

代码语言:javascript
运行
复制
from google.auth import default

credentials, _ = default(scopes=['https://www.googleapis.com/auth/cloud-platform'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60401040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档