Necesito consultar un token de una función GCP, para eso, quiero hacer lo que hace la función js GoogleAuth<JSONClient>.getIdTokenClient(targetAudience) pero en Android.
En este momento estoy usando este código para generar un token de autenticación:
GoogleCredentials .fromStream( app.assets.open("my_config_file.json") ) .createScoped( listOf( "https://www.googleapis.com/auth/cloud-platform" ) )Pero el token generado es un ya29.c. , con el getIdToken obtengo un token válido.
¿Cómo puedo obtener un token válido como getIdToken en mi aplicación de Android?
Para aplicaciones basadas en Java, tiene google-auth-library-java . Al buscar en los documentos de esta biblioteca, tiene las clases IdTokenCredentials.Builder e IdTokenCredentials .
También tienes un ejemplo de caso de uso:
String credPath = "/path/to/svc_account.json"; String targetAudience = "https://example.com"; // For Application Default Credentials (as ServiceAccountCredentials) // export GOOGLE_APPLICATION_CREDENTIALS=/path/to/svc.json GoogleCredentials adcCreds = GoogleCredentials.getApplicationDefault(); if (!adcCreds instanceof IdTokenProvider) { // handle error message } IdTokenCredentials tokenCredential = IdTokenCredentials.newBuilder() .setIdTokenProvider(adcCreds) .setTargetAudience(targetAudience).build(); // Use the IdTokenCredential in an authorized transport GenericUrl genericUrl = new GenericUrl("https://example.com"); HttpCredentialsAdapter adapter = new HttpCredentialsAdapter(tokenCredential); HttpTransport transport = new NetHttpTransport(); HttpRequest request = transport.createRequestFactory(adapter).buildGetRequest(genericUrl); HttpResponse response = request.execute(); // Print the token, expiration and the audience System.out.println(tokenCredential.getIdToken().getTokenValue()); System.out.println(tokenCredential.getIdToken().getJsonWebSignature().getPayload().getAudienceAsList()); System.out.println(tokenCredential.getIdToken().getJsonWebSignature().getPayload().getExpirationTimeSeconds());