Tad Tad -4 years ago 125
Java Question

Authorization to Google Client

I am writing a class for creating authorization to Bigquery and Google Cloud Storage. In the past I have used CredentialStore which has been deprecated. I am trying to use DataStoreFactory but I discovered that it allows me to use only StoredCredential while I need a Credential. I know one can convert from Credential to StoredCredential but I am not sure how to convert them in the opposite direction (StoredCredential to Credential). I am creating my connection using for example
Storage.Builder(HttpTransport transport, JsonFactory jsonFactory, HttpRequestInitializer httpRequestInitializer)

Could anyone point me in a direction about how to achieve this? Thank you!

Answer Source

In most cases, wherever you use Credential, you could use StoreCredential. There is only one point you would work with Credential, which is retrieving the Access Token during the OAuth callback. From there the Credential can be converted to StoreCredential and stored into the DataStore. After that storage and retrieval all works with StoredCredential.

But there are places were StoredCredential can't be used. I just encountered one trying to create the Google Drive API Service wrapper.

There is way to get around this with the GoogleCredential object, it can be created from StoredCredential as per this answer: Stored Credential from google api to be reused java

HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleCredential googleCredential = new GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(jsonFactory)
    .setClientSecrets("client_id", "client_secret").build();
credential.setAccessToken(storedCredential.getAccessToken();
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download