gpt4 book ai didi

java - 谷歌电子表格的 OAuth2 身份验证问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:29 26 4
gpt4 key购买 nike

我正在使用 java 库进行 oauth2 身份验证以访问谷歌电子表格。

我使用以下代码进行 OAuth2 身份验证:

credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setTokenServerEncodedUrl("https://accounts.google.com/o/oauth2/token")
.setServiceAccountScopes("https://www.googleapis.com/auth/drive", "https://spreadsheets.google.com/feeds", "https://docs.google.com/feeds")
.setServiceAccountPrivateKeyFromP12File(new File("xxxxx-privatekey.p12")).build();

获取“凭据”后,使用以下代码读取电子表格:

SpreadsheetService service = new SpreadsheetService(
"MySpreadsheetIntegration");
service.setOAuth2Credentials(credential);
URL SPREADSHEET_FEED_URL = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");
SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class);
System.out.println(feed.getTotalResults());

执行上面的代码返回总结果 0。

如果我使用:

service.setUserCredentials("email", "password");

代替 oauth2 身份验证,它返回正确的结果。不确定 OAuth2 身份验证有什么问题。此外,当我从“凭据”对象打印“访问 token ”时,它会打印一个有效的访问 token 。

最佳答案

我使用:

spreadsheetService = new SpreadsheetService("cellmaster.com.au-v0.2");  
spreadsheetService.setHeader("Authorization", "Bearer " + accessToken);

而不是:

spreadsheetService = new SpreadsheetService("cellmaster.com.au-v0.2");  
spreadsheetService.setOAuth2Credentials(credential);

我还必须为刷新 token 添加代码。由于访问 token 很快就会过期。但刷新 token 的工作方式与您预期的一样。

关于java - 谷歌电子表格的 OAuth2 身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15084133/

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