Questions tagged [google-api-java-client]

The Google APIs Client Library for Java is a flexible, efficient, and powerful Java client library for accessing any HTTP-based API on the web, not just Google APIs.

Google APIs Client Library for Java

Overview

The Google APIs Client Library for Java is a flexible, efficient, and powerful Java client library for accessing any HTTP-based API on the web, not just Google APIs.

The library has the following features:

Accessing Google APIs

To use Google's Java client libraries to call any Google API, you need two libraries:

  • The core Google APIs Client Library for Java (google-api-java-client), which is the generic runtime library described here. This library provides functionality common to all APIs, for example HTTP transport, error handling, authentication, JSON parsing, media download/upload, and batching.
  • An auto-generated Java library for the API you are accessing, for example the generated Java library for the BigQuery API. These generated libraries include API-specific information such as the root URL, and classes that represent entities in the context of the API. These classes are useful for making conversions between JSON objects and Java objects.

To find the generated library for a Google API, visit Google APIs Client Library for Java. The API-specific Java packages include both the core google-api-java-client and the client-specific libraries.

If you are using the old GData library, you need to migrate.

Developing for Android

If you are developing for Android and the Google API you want to use is included in the Google Play Services library, you should use that library for the best performance and experience.

To access other Google APIs, you can use the Google APIs Client Library for Java, which supports Android 1.5 (or higher).

Other Java environments

In addition to Android 1.5 or higher, the Google APIs Client Library for Java supports the following Java environments: - Java 5 (or higher), standard (SE) and enterprise (EE) - Google App Engine

Not supported: Google Web Toolkit (GWT), Java mobile (ME), and Java 1.4 (or earlier).

Highlighted Features

  • The library makes it simple to call Google APIs.

    You can call Google APIs using Google service-specific generated libraries with the Google APIs Client Library for Java. Here's an example that makes a call to the Google Calendar API:

    java // Show events on user's calendar. View.header("Show Calendars"); CalendarList feed = client.calendarList().list().execute(); View.display(feed);

  • The library makes authentication easier.

    The authentication library can reduce the amount of code needed to handle OAuth 2.0, and sometimes a few lines is all you need. For example:

    java /** Authorizes the installed application to access user's protected data. */ private static Credential authorize() throws Exception { // load client secrets GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(CalendarSample.class.getResourceAsStream("/client_secrets.json"))); // set up authorization code flow GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( httpTransport, JSON_FACTORY, clientSecrets, Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory) .build(); // authorize return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); }

  • The library makes batching and media upload/download easier.

    The library offers helper classes for batching, media upload, and media download.

  • The library runs on Google App Engine.

    App Engine-specific helpers make quick work of authenticated calls to APIs, and you do not need to worry about exchanging code for tokens. For example:

    java @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { AppIdentityCredential credential = new AppIdentityCredential(Arrays.asList(UrlshortenerScopes.URLSHORTENER)); Urlshortener shortener = new Urlshortener.Builder(new UrlFetchTransport(), new JacksonFactory(), credential) .build(); UrlHistory history = shortener.URL().list().execute(); ... }

  • The library runs on Android (@Beta).

    If you are developing for Android and the Google API you want to use is included in the Google Play Services library, you should use that library for the best performance and experience.

    To access other Google APIs, you can use the Google Client Library for Java's Android-specific helper classes, which are are well-integrated with Android AccountManager. For example:

    java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Google Accounts credential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(TasksScopes.TASKS)); SharedPreferences settings = getPreferences(Context.MODE_PRIVATE); credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null)); // Tasks client service = new com.google.api.services.tasks.Tasks.Builder(httpTransport, jsonFactory, credential) .setApplicationName("Google-TasksAndroidSample/1.0").build(); }

  • The library is easy to install.

    The Google APIs Client Library for Java is easy to install, and you can download the binary directly from the Downloads page, or you can use Maven or Gradle. To use Maven, add the following lines to your pom.xml file:

    maven <project> <dependencies> <dependency> <groupId>com.google.api-client</groupId> <artifactId>google-api-client</artifactId> <version>1.20.0</version> </dependency> </dependencies> </project>

    To use Gradle, add the following lines to your build.gradle file:

    gradle repositories { mavenCentral() } dependencies { compile 'com.google.api-client:google-api-client:1.20.0' }

Dependencies

This library is built on top of two common libraries, also built by Google, and also designed to work with any HTTP service on the web: * Google HTTP Client Library for Java * Google OAuth Client Library for Java

Important Warnings

@Beta

Features marked with the @Beta annotation at the class or method level are subject to change. They might be modified in any way, or even removed, in any major release. You should not use beta features if your code is a library itself (that is, if your code is used on the CLASSPATH of users outside your own control).

Deprecations

Deprecated non-beta features will be removed eighteen months after the release in which they are first deprecated. You must fix your usages before this time. If you don't, any type of breakage might result, and you are not guaranteed a compilation error.

Documentation

Links

1147 questions
4
votes
0 answers

Using OAuth 2.0 to Access Google Calendar Error: redirect_uri_mismatch

I am trying to run the Calendar App Engine Sample. But after running on http://localhost:8888, it produce the following error. Error: redirect_uri_mismatch The redirect URI in the request: http://localhost:8888/oauth2callback did not match a…
Jake He
  • 2,417
  • 3
  • 29
  • 41
4
votes
1 answer

EOFException while using google could endpoints

I am using google cloud enpoints in my android app. When I do a post call to my backend, I sometimes see an EOFException. This does not happen always. I get this error for 5% of my requests. Also, this varies on devices. Some devices show this error…
4
votes
1 answer

Can Insert objects created from the same Storage object be executed concurrently?

I'm using Google's Java API to work with Google Cloud Storage (GCS). I have multiple worker threads that insert objects into GCS. Currently they share a common Storage instance, and use this to create Storage.Object.Insert…
4
votes
1 answer

Integrating Google Drive into Android app, unresolved imports

I'm trying to integrate google drive api within my app. I followed step-by-step this quick start guide https://developers.google.com/drive/quickstart-android but after lot of tests, I still have some unresolved imports! I have all imports working,…
4
votes
1 answer

Inserting a new calendarEntry in google calendar API v3 returns a 404

I use the google-api-services-calendar v3 for java. I list without problems my calendarEntries. But the insertion of a new calendarEntry fails. I use the same code as the samples : CalendarListEntry newCal = new…
GaetanZ
  • 2,819
  • 3
  • 21
  • 20
4
votes
2 answers

Google calendar API OAUTH

I'm trying to make a Java app (stand alone not web based) that connects to Google calendar but im having issues getting past the OAuth stage. I have looked over every part of the Google API i can see. The newest version i can find is at…
3
votes
1 answer

I'm really confused about Chrome Extension+Google API

I'm really confused. I want to make a Chrome Extension that can update a user's Google Calendar, what kind of program should I register under Google API? Is it Web App? But I don't plan to have a server to host anything because Chrome Extensions are…
3
votes
1 answer

Adding description while adding your own place using Google places API in Android

I want to add my own place using Google places API in android with some description. Now i want to add vicinity, URL, Website, international_phone_number etc in the string format below but i am unable to get it plz help me: String placeJSON = …
naeemgik
  • 2,232
  • 4
  • 25
  • 47
3
votes
1 answer

Get Google AuthSub token from android app

I'm writing an android program which must interact with google documents, so I have watched this sample, but it uses an AuthSub token. How can I get an AuthSub Token from an android app?
Aram
  • 695
  • 1
  • 5
  • 20
3
votes
2 answers

Android NetworkOnMainThreadException inside of AsyncTask

I have a problem on ICS when I try to use google calendar api. To get a list of events, I have a AsyncTask and inside doInBackground() I make the service calls but still I receive the NetworkOnMainThreadException error. Here is my code: I call my…
Cata
  • 11,133
  • 11
  • 65
  • 86
3
votes
1 answer

Using Google API Java Client on Android, a POST request does not seem to authenticate with Google App Engine app using OAuth

I have an Android client that needs to authenticate with a python Google App Engine app using OAuth. I followed this article. And was able to successfully do so using an HTTP Get Request. The Android client uses the package com.google.api.client…
3
votes
1 answer

Would it be possible to fetch videos on a certain tag published between certain dates

We use google-api-java-client to lookup videos and we would like to know if it would be possible to fetch videos on a certain tag (say sports) published between certain dates (starting from yesterday till now). How do I do this?
user899876
3
votes
2 answers

Single sign on for google api's using Scribe?

Is there anyway to retrieve the Google Oauth refresh_token using Scribe? I am building an app that requires several scopes mixed between java Gdata and Google api java client libraries -- and I am looking for a Single Sign On (SSO) when a user of my…
Java Guy
  • 1,005
  • 14
  • 20
3
votes
0 answers

Exporting contacts from Android to Gmail account

I'm a junior Android developer. I have task to export contacts from my Android phone book to Gmail account directory Contacts->My Contacts, but I can't find any useful information on the Internet about Google Gmail API, so the question is how can I…
3
votes
1 answer

Android Google API Java Client com.google.api.client.auth.oauth2.draft10

I was trying to do a simple app using the Google Tasks API. Something simple it's turning into a nightmare. Maybe it's something simple, probably it is, but I can't figure it out. The problem: I was following the example of TasksSample.java from…
greven
  • 633
  • 7
  • 18