Get started with Java client library

To start using the Google Photos Library API with the Java client library, you will need to set up the client library in your development environment. Before you do that, configure your project by enabling the API via the Google API Console and setting up an OAuth 2.0 client ID.

Your application interacts with Google Photos on behalf of a Google Photos user. For instance, when you create albums in a user's Google Photos library or upload media items to a user's Google Photos account, the user authorizes these API requests via the OAuth 2.0 protocol.

The OAuth 2.0 client ID allows your application users to sign in, authenticate, and thereby use the Library API. The Library API does not support service accounts; to use this API, users must be signed in to a valid Google Account.

Configure your app

Enable the API

Before you can use the Library API, you must enable it for your project.

  1. Go to the Google API Console.
  2. From the menu bar, select a project or create a new project.
  3. To open the Google API Library, from the Navigation menu, select APIs & Services > Library.
  4. Search for "Google Photos Library API". Select the correct result and click Enable.

Request an OAuth 2.0 client ID

Follow the steps below to request an OAuth client ID and configure it for your application. This example uses an application where the entire OAuth flow is handled server-side, such as the one in our samples. The setup process may vary for other implementation scenarios.

  1. Go to the Google API Console and select your project.
  2. From the menu, select APIs & Services > Credentials.
  3. On the Credentials page, click Create Credentials > OAuth client ID.
  4. Select your Application type. In this example, the application type is Web application.
  5. Register the origins from which your app is allowed to access the Google APIs as follows:

    1. To identify the client ID, enter a name.
    2. In the Authorized JavaScript origins field, enter the origin for your app. This field doesn't allow wildcards.

      You can enter multiple origins to allow your app to run on different protocols, domains, or subdomains. The URLs you enter are allowed to start an OAuth request.

      The following example shows a local development URL (our samples use localhost:8080) and a production URL.

      http://localhost:8080
      https://myproductionurl.example.com
      
    3. The Authorized redirect URI field is the endpoint that receives responses from the OAuth 2.0 server. Typically, this includes your development environment and points to a path in your application.

      http://localhost:8080/auth/google/callback
      https://myproductionurl.example.com/auth/google/callback
      
    4. Click Create.

  1. From the resulting OAuth client dialog, download the JSON file containing your client configuration. You client details consist of the following:

    • Client ID
    • Client secret

    This JSON file will be used later to set up the Google Auth library for Java which works with this client library.

Before you can launch a public application that accesses the Library API, your app must be reviewed by Google. An "Unverified app" message appears on the screen when you test your application, until it is verified.

Set up the client library

The Java client library handles all the backend API calls for you, and exposes friendly objects to work with, including code samples for some common API tasks. Firstly, download and install the Google Photos Library API client library for Java along with the dependencies from GitHub. Then, set up your OAuth2 credentials for Java.

Download options

Here are some options to download the client library:

  • Gradle dependency:

    To use this library with Gradle, add the following dependency to your build.gradle file.

    repositories {
      mavenCentral()
    }
    dependencies {
      compile 'com.google.photos.library:google-photos-library-client:1.7.3'
    }
    
  • Maven dependency:

    To use this library with Maven, add the following to your Maven pom.xml file.

    <dependency>
      <groupId>com.google.photos.library</groupId>
      <artifactId>google-photos-library-client</artifactId>
      <version>1.7.3</version>
    </dependency>
    
  • Download a release:

    The releases page contains different artifacts for each library release, including jar files.

  • Clone the repository:

    Use this method if you want to alter or contribute to this library, for example, submitting pull requests, or if you wish to try our samples. When you clone the repository, all files in this repository will be downloaded.

    1. Run git clone https://github.com/google/java-photoslibrary.git at the command prompt.
    2. You'll get a java-photoslibrary directory. Navigate to it by running cd java-photoslibrary.
    3. Open the build.gradle file in your IDE or run ./gradlew assemble at the command prompt to build the project. See ./gradlew tasks to see available tasks.

Set up your OAuth2 credentials for Java

This client library works with the Google Auth Library for Java. For more information, refer to Using OAuth 2.0 with the Google API Client Library for Java.

Specify your client OAuth configuration in the CredentialsProvider when creating the PhotoLibrarySettings for a PhotosLibraryClient object.

Try out some samples

Try the code below to make your first API call using the Java client library.

// 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
}

There are more samples on GitHub for you to try.