使用带有API密钥而不是OAuth的Google Sheets Java API?

时间:2018-12-23 04:27:37

标签: java google-sheets google-sheets-api

是否可以通过示例中给出的API密钥而不是OAuth使用“ Google Sheet Java API”

https://developers.google.com/sheets/api/quickstart/java

我知道您可以使用HTTP请求通过API密钥获取数据,但是我在想是否可以通过Google提供的Java API来执行此操作,这样我就不必为每个请求解析JSON。

3 个答案:

答案 0 :(得分:1)

是的,基本上,您需要类似以下内容的东西:

public NetHttpTransport netHttpTransport() throws GeneralSecurityException, IOException {
    return GoogleNetHttpTransport.newTrustedTransport();
}

public JacksonFactory jacksonFactory() {
    return JacksonFactory.getDefaultInstance();
}

private Set<String> googleOAuth2Scopes() {
    Set<String> googleOAuth2Scopes = new HashSet<>();
    googleOAuth2Scopes.add(SheetsScopes.SPREADSHEETS_READONLY);
    return Collections.unmodifiableSet(googleOAuth2Scopes);
}

public GoogleCredential googleCredential() throws IOException {
    File serviceAccount = new ClassPathResource("serviceAccount.json").getFile();
    return GoogleCredential.fromStream(new FileInputStream(serviceAccount))
            .createScoped(googleOAuth2Scopes());
}

public Sheets googleSheets() {
    return new Sheets(netHttpTransport(), jacksonFactory(), googleCredential());
}

您可以在此处了解有关serviceAccount.json的更多信息:https://cloud.google.com/iam/docs/creating-managing-service-account-keys


以上内容摘自一个我与Google API集成的示例Spring Boot项目:https://github.com/ciscoo/spring-boot-google-apis-example

答案 1 :(得分:0)

是的,您可以使用API​​密钥。来自https://developers.google.com/sheets/api/guides/authorizing

  

您的应用程序发送到Google Sheets API的每个请求都需要向Google标识您的应用程序。有两种方法可以识别您的应用程序:使用OAuth 2.0令牌(也可以授权请求)和/或使用应用程序的API密钥。

答案 2 :(得分:0)

我没有找到实现此目标的任何官方方法,但是我能够按照Acquiring and using an API key中所述进行操作:

拥有API密钥后,您的应用程序可以将查询参数Code附加到所有请求URL。

使用请求拦截器并手动添加key=yourAPIKey查询参数,如下所示:

key