当前位置: 首页 > 知识库问答 >
问题:

通过Java访问google photos API

晏阳飙
2023-03-14

我对谷歌应用编程接口非常陌生,我有麻烦了。我留档谷歌照片APIJava,然后我在谷歌API控制台创建OAuth凭据并下载它(credentials.json文件)。之后,我试图访问谷歌照片。这里是代码从留档:

// Set up the Photos Library Client that interacts with the API
PhotosLibrarySettings settings =
   PhotosLibrarySettings.newBuilder()
  .setCredentialsProvider(
      FixedCredentialsProvider.create(/* Add credentials here. */)) 
  .build();

try (PhotosLibraryClient photosLibraryClient =
    PhotosLibraryClient.initialize(settings)) {

  // Create a new Album  with at title
  Album createdAlbum = photosLibraryClient.createAlbum("My Album");

  // Get some properties from the album, such as its ID and product URL
  String id = album.getId();
  String url = album.getProductUrl();

 } catch (ApiException e) {
    // Error during album creation
 }

但是我不明白如何创建凭据对象,将其传递给FixedCreentialsProvider.create()方法

你能给我一些解释/链接吗?

共有3个答案

程谦
2023-03-14

您首先需要了解OAuth 2:https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2

然后你可以看看这个答案https://stackoverflow.com/a/54533855/6153171

附言:1。授权类型:授权代码谷歌开发者控制台:凭证为web客户端。

googleApiClient-

googleApiClient-

公良理
2023-03-14

调用接受一个com.google.auth.凭据对象。对于谷歌照片库应用编程接口,这应该是一个用户凭据对象,您可以创建用户凭据。Builder是Google OAuth库的一部分。在那里,您设置了刷新令牌、客户端ID、客户端机密等来初始化凭据。获取刷新令牌需要您的应用程序完成提示用户进行授权和批准的GoogleAuthorizationCodeFlow。

您可以在GitHub上查看示例实现,但以下是相关代码:

  GoogleAuthorizationCodeFlow flow =
        new GoogleAuthorizationCodeFlow.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                JSON_FACTORY,
                clientSecrets,
                selectedScopes)
            .setDataStoreFactory(new FileDataStoreFactory(DATA_STORE_DIR))
            .setAccessType("offline")
            .build();
    LocalServerReceiver receiver =
        new LocalServerReceiver.Builder().setPort(LOCAL_RECEIVER_PORT).build();
    Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
    return UserCredentials.newBuilder()
        .setClientId(clientId)
        .setClientSecret(clientSecret)
        .setRefreshToken(credential.getRefreshToken())
        .build();

涉及到一些活动部分,但是Google Photos库API客户端库与Google身份验证库一起处理OAuth身份验证。

左丘阳晖
2023-03-14

您可以创建一个UserCredentials对象并传递它

UserCredentials.newBuilder()
        .setClientId("your client id")
        .setClientSecret("your client secret")
        .setAccessToken("Access Token")
        .build()

仔细检查这个答案https://stackoverflow.com/a/54533855/6153171

或者在github上查看这个完整的项目https://github.com/erickogi/AndroidGooglePhotosApi

 类似资料:
  • 要 动态获取一个对象方法的信息,首先需要通过下列方法之一创建一个 类型的对象或者数组。 getMethods() getMethods(String name,Class<?> …parameterTypes) getDeclaredMethods() getDeclaredMethods(String name,Class<?>...parameterTypes) 如果是访问指定的构造方法,需要

  • 问题内容: 我正在寻找一种在Java App(使用JDBC)中打开Access MDB文件的方法。 快速的Google搜索建议我为此需要JDBC-ODBC Bridge。 这是否意味着我需要配置要在其上运行应用程序的每个系统,以便为要打开的MDB提供ODBC DSN? 还有一个问题(因为我以前从未使用过ODBC):通信是通过某种套接字(以客户机/服务器方式)还是通过方法/函数调用(例如嵌入Derb

  • 问题内容: 这是一个测试类: 这是我的输出: 我缺少通过反射使注释可见的什么? 我是否仅需要检查它们的存在就需要注释处理器? 问题答案: 为了在运行时访问注释,它需要具有运行时的保留策略。 否则,注释将被丢弃,并且JVM无法识别它们。 有关更多信息,请参见此处。

  • 通过下列任意一个方法访问成员变量时将返回 Field 类型的对象或数组。 getFields() getField(String name) getDeclaredFields() getDeclaredField(String name) 上述方法返回的 Field 对象代表一个成员变量。例如,要访问一个名称为 price 的成员变量,示例代码如下: Field 类的常用方法如表 1 所示 表1

  • 为了能够 动态获取对象构造方法的信息,首先需要通过下列方法之一创建一个 类型的对象或者数组。 getConstructors() getConstructor(Class<?>…parameterTypes) getDeclaredConstructors() getDeclaredConstructor(Class<?>...parameterTypes) 如果是访问指定的构造方法,需要根据该构

  • 这个问题与:在java中使用Azure Service Bus相关-之前的一个问题涉及使用ACS连接信息获取ServiceBusContract。 我的问题不同,因为我试图使用从Azure门户获取的SAS连接信息来实现这一点,例如类似于以下内容的SAS信息: 名称RootManageSharedAccessKey CONNECTION STRING Endpoint=sb://jasper.ser