Authentication and authorization scopes

The Google Photos Library API contains multiple scopes used to access media items and albums. The responses returned from various calls are different based on which scopes have been requested by the developer.

Every request your application sends to the Google Photos Library API must include an authorization token. The token also identifies your application to Google.

About authorization protocols

Your application must use OAuth 2.0 to authorize requests. No other authorization protocols are supported. If your application uses Google Sign-In, some aspects of authorization are handled for you.

Authorizing requests with OAuth 2.0

All requests to the Google Photos Library API must be authorized by an authenticated user.

The details of the authorization process, or "flow," for OAuth 2.0 vary somewhat depending on what kind of application you're writing. The following general process applies to all application types:

  1. When you create your application, you register it using the Google API Console. Google then provides information you'll need later, such as a client ID and a client secret.
  2. Activate the Google Photos Library API in the Google API Console. (If the API isn't listed in the API Console, then skip this step.)
  3. When your application needs access to user data, it asks Google for a particular scope of access.
  4. Google displays a consent screen to the user, asking them to authorize your application to request some of their data.
  5. If the user approves, then Google gives your application a short-lived access token.
  6. Your application requests user data, attaching the access token to the request.
  7. If Google determines that your request and the token are valid, it returns the requested data.

Some flows include additional steps, such as using refresh tokens to acquire new access tokens. For detailed information about flows for various types of applications, see Google's OAuth 2.0 documentation.

Here's the OAuth 2.0 scope information for the Google Photos Library API:

Scope Meaning
https://www.googleapis.com/auth/photoslibrary.readonly

Read access only.

List items from the library and all albums, access all media items and list albums owned by the user, including those which have been shared with them.

For albums shared by the user, share properties are only returned if the .sharing scope has also been granted.

The ShareInfo property for albums and the contributorInfo for mediaItems is only available if the .sharing scope has also been granted.

For more information, see Share media.

https://www.googleapis.com/auth/photoslibrary.appendonly

Write access only.

Acess to upload bytes, create media items, create albums, and add enrichments. Only allows new media to be created in the user's library and in albums created by the app.

https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata

Read access to media items and albums created by the developer. For more information, see Access media items and List library contents, albums, and media items.

Intended to be requested together with the .appendonly scope.

https://www.googleapis.com/auth/photoslibrary Access to both the .appendonly and .readonly scopes. Doesn't include .sharing.
https://www.googleapis.com/auth/photoslibrary.sharing

Access to sharing calls.

Access to create an album, share it, upload media items to it, and join a shared album.

To request access using OAuth 2.0, your application needs the scope information, as well as information that Google supplies when you register your application (such as the client ID and the client secret).

Tip: The Google APIs client libraries can handle some of the authorization process for you. They are available for a variety of programming languages; check the page with libraries and samples for more details.

Selecting scopes

As a general rule, choose the most restrictive scope possible and avoid requesting scopes that your app does not need. Users more readily grant access to limited, clearly described scopes. Users may hesitate to grant broad access to their media unless they trust your app and understand why it needs the information.