Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用google电子表格进行OAuth2身份验证时出现问题_Java_Google Spreadsheet Api_Google Oauth - Fatal编程技术网

Java 使用google电子表格进行OAuth2身份验证时出现问题

Java 使用google电子表格进行OAuth2身份验证时出现问题,java,google-spreadsheet-api,google-oauth,Java,Google Spreadsheet Api,Google Oauth,我正在使用java库进行oauth2身份验证以访问google电子表格 我正在使用以下代码进行OAuth2身份验证: credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setTokenServerEncodedUrl("https

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

我使用:

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(“授权”、“承载人”+accessToken);方法setHeader(String,String)对于类型SpreadsheetService是未定义的,我正在使用gdata-spreadsheet-3.0.jar lib。你能使用相同的版本吗?core-1.47.1.jar看起来是我使用的jar文件-,java.lang.String)-我在发送电子邮件时确实存在jar文件问题,因此使用了一些非标准的组合但现在我使用ethercalc,就像谷歌表单一样,但都是开源的