private static GoogleCredential _createCredentialUsingServerToken(final HttpTransport httpTransport, final JsonFactory jsonFactory) throws IOException, GeneralSecurityException { // Use the client ID when making the OAuth 2.0 access token request (see Google's OAuth 2.0 Service Account documentation). String serviceAccountClientID = "327116756300-thcjqf1mvrn0geefnu6ef3pe2sm61i2q.apps.googleusercontent.com"; // Use the email address when granting the service account access to supported Google APIs String serviceAccountUserEmail = "xxxx@developer.gserviceaccount.com"; GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setServiceAccountId(serviceAccountUserEmail) // requesting the token .setServiceAccountPrivateKeyFromP12File(new File(SERVER_P12_SECRET_PATH)) .setServiceAccountScopes(SCOPES) // see https://developers.google.com/gmail/api/auth/scopes .setServiceAccountUser("user@example.com") .build(); credential.refreshToken(); return credential; }
String STORAGE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); Log.d("testing", "checking if I can create a credential"); httpTransport = AndroidHttp.newCompatibleTransport(); KeyStore keystore = KeyStore.getInstance("PKCS12"); keystore.load(resources_.openRawResource(R.raw.gcs_privatekey), "password".toCharArray()); PrivateKey key = (PrivateKey) keystore.getKey("privatekey", "password".toCharArray()); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountPrivateKey(key) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountScopes(Collections.singleton(STORAGE_SCOPE)) // .setServiceAccountUser(SERVICE_ACCOUNT_EMAIL) // .setClientSecrets(CLIENT_ID, CLIENT_SECRET) .build(); credential.refreshToken(); String URI = "https://storage.googleapis.com/" + BUCKET_NAME; HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential); GenericUrl url = new GenericUrl(URI); HttpRequest request = requestFactory.buildGetRequest(url); HttpResponse response = request.execute(); String content = response.parseAsString(); Log.d("testing", "response content is: " + content); new Storage.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName("appname").build();
credential.refreshToken(); String accessToken = credential.getAccessToken();
credential.refreshToken(); String accessToken = credential.getAccessToken();
List<String> scopes = new ArrayList<String>(); scopes.add("https://www.google.com/m8/feeds/"); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(new NetHttpTransport()) .setJsonFactory( new JacksonFactory()) .setServiceAccountId("id@developer.gserviceaccount.com") .setServiceAccountPrivateKeyFromP12File(new File("privatekey.p12")) .setClientSecrets("clientID", "clientSecret") .setServiceAccountScopes(scopes) .build(); credential.refreshToken();
.build(); if (!credential.refreshToken()) { throw new RuntimeException("Failed OAuth to refresh the token");
if (!credential.refreshToken()) { throw new RuntimeException("Failed OAuth to refresh the token");
final GoogleCredential credential = new Builder() .setTransport(new NetHttpTransport()) .setJsonFactory(new JacksonFactory()) .setClientSecrets(OAuth2Provider.GOOGLE_CLIENT_ID, OAuth2Provider.GOOGLE_CLIENT_SECRET) .build().setRefreshToken(refreshToken); credential.refreshToken(); //do not forget to call String newAccessToken = credential.getAccessToken();
credential.refreshToken(); String accessToken = credential.getAccessToken();
@Override public Optional<GoogleAccessToken> getGoogleAccessToken() { if ( !getGoogleCredential().isPresent() ) { return Optional.empty(); } GoogleCredential credential = getGoogleCredential().get(); try { if ( !credential.refreshToken() || credential.getExpiresInSeconds() == null ) { log.warn( "There is no refresh token to be retrieved" ); return Optional.empty(); } } catch ( IOException ex ) { throw new IllegalStateException( "Could not retrieve refresh token: " + ex.getMessage(), ex ); } GoogleAccessToken token = new GoogleAccessToken(); token.setAccessToken( credential.getAccessToken() ); token.setClientId( getProperty( ConfigurationKey.GOOGLE_SERVICE_ACCOUNT_CLIENT_ID ) ); token.setExpiresInSeconds( credential.getExpiresInSeconds() ); token.setExpiresOn( LocalDateTime.now().plusSeconds( token.getExpiresInSeconds() ) ); return Optional.of( token ); }
credential.setRefreshToken(refreshToken); try { credential.refreshToken(); } catch (IOException e) { String message = "Google spreadsheet connection failed, Error refreshing the token ";
/** * Prepare an AbstractGoogleJsonClient.Builder with the given service account ID * and private key {@link File}. * * @param builder The builder to be prepared. * @param serviceAccountId The service account ID (typically an email address) * @param p12File The file on disk containing the private key * @return The passed in builder, for easy chaining. * @throws GeneralSecurityException * @throws IOException */ public <T extends AbstractGoogleJsonClient.Builder> T fromServiceAccount(T builder, String serviceAccountId, File p12File) throws GeneralSecurityException, IOException { Preconditions.checkNotNull(builder); GoogleCredential creds = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setServiceAccountId(serviceAccountId) .setServiceAccountScopes(scopes) .setServiceAccountPrivateKeyFromP12File(p12File) .build(); creds.refreshToken(); return prepareBuilder(builder, creds, null); }
@Beta private static GoogleCredential fromStreamUser(GenericJson fileContents, HttpTransport transport, JsonFactory jsonFactory) throws IOException { String clientId = (String) fileContents.get("client_id"); String clientSecret = (String) fileContents.get("client_secret"); String refreshToken = (String) fileContents.get("refresh_token"); if (clientId == null || clientSecret == null || refreshToken == null) { throw new IOException("Error reading user credential from stream, " + " expecting 'client_id', 'client_secret' and 'refresh_token'."); } GoogleCredential credential = new GoogleCredential.Builder() .setClientSecrets(clientId, clientSecret) .setTransport(transport) .setJsonFactory(jsonFactory) .build(); credential.setRefreshToken(refreshToken); // Do a refresh so we can fail early rather than return an unusable credential credential.refreshToken(); return credential; }