【问题标题】:Issue with OAuth2 authentication with google spreadsheet使用 Google 电子表格进行 OAuth2 身份验证的问题
【发布时间】:2013-02-26 08:00:40
【问题描述】:

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

我正在使用以下代码进行 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 身份验证有什么问题。 此外,当我从“凭据”对象打印“访问令牌”时,它会打印一个有效的访问令牌。

【问题讨论】:

    标签: java google-spreadsheet-api google-oauth


    【解决方案1】:

    我用:

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

    而不是:

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

    我还必须为刷新令牌添加代码。由于访问令牌很快就会过期。但是刷新令牌可以按您的预期工作。

    【讨论】:

    • spreadsheetService.setHeader("Authorization", "Bearer" + accessToken);对于我正在使用 gdata-spreadsheet-3.0.jar lib 的 SpreadsheetService 类型,方法 setHeader(String, String) 未定义,您可以使用相同的版本吗
    • core-1.47.1.jar 看起来是我使用的 Jar 文件 - developers.google.com/gdata/javadoc/com/google/gdata/client/…, java.lang.String) - 我确实在发送电子邮件时遇到了 jar 文件问题,所以使用了一点非标准组合。 -- 但是这些天我使用ethercalc,就像谷歌表格一样,但都是开源的
    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 2014-04-29
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2013-07-01
    相关资源
    最近更新 更多