Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: ¿Qué es transport y jsonFactory en GoogleIdTokenVerifier.Builder?

En el código del golpe, cuál es transport y jsonFactory ? (No entiendo)

Https://developers.google.com/identity/sign-in/android/backend-auth#using-a-google-api-client-library

 import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken; import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload; import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier; ... GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport /**Here**/, jsonFactory /**Here**/) .setAudience(Arrays.asList(CLIENT_ID)) // If you retrieved the token on Android using the Play Services 8.3 API or newer, set // the issuer to "https://accounts.google.com". Otherwise, set the issuer to // "accounts.google.com". If you need to verify tokens from multiple sources, build // a GoogleIdTokenVerifier for each issuer and try them both. .setIssuer("https://accounts.google.com") .build(); // (Receive idTokenString by HTTPS POST) GoogleIdToken idToken = verifier.verify(idTokenString); if (idToken != null) { Payload payload = idToken.getPayload(); // Print user identifier String userId = payload.getSubject(); System.out.println("User ID: " + userId); // Get profile information from payload String email = payload.getEmail(); boolean emailVerified = Boolean.valueOf(payload.getEmailVerified()); String name = (String) payload.get("name"); String pictureUrl = (String) payload.get("picture"); String locale = (String) payload.get("locale"); String familyName = (String) payload.get("family_name"); String givenName = (String) payload.get("given_name"); // Use or store profile information // ... } else { System.out.println("Invalid ID token."); } 

  • No se puede resolver el símbolo 'Auth' para la integración de Google en android studio
  • Inicia sesión de Google en la aplicación de Android para consumir Cloud Endpoints backend
  • Signin de Google Firebase dando estado 12501 (no funciona), en la versión de creación de la versión y jks SHA
  • Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
  • ¿por qué requestIdToken devuelve null?
  • La ejecución falló para la tarea ': app: transformClassesWithDexForDebug' al implementar Google inicie sesión en Android
  • ¿Cómo volver a autenticar un usuario en Firebase con Google Provider?
  • Android - GoogleSignInResult siempre falla
  • One Solution collect form web for “Android: ¿Qué es transport y jsonFactory en GoogleIdTokenVerifier.Builder?”

    El GoogleIdTokenVerifier.Builder devuelve un GoogleIdTokenVerifier que realizará una solicitud al punto final tokeninfo con el transporte que se le dé y utilizará JSONFactory para crear un analizador para analizar la respuesta.

    A continuación, se muestra un ejemplo de un autenticador para un proyecto de extremos de nube que utiliza GoogleIdTokenVerifier.Builder

     public class GoogleAuthenticator implements Authenticator { private static final Logger log = Logger.getLogger(GoogleAuthenticator.class.getName()); private static final JacksonFactory jacksonFactory = new JacksonFactory(); // From: https://developers.google.com/identity/sign-in/android/backend-auth#using-a-google-api-client-library // If you retrieved the token on Android using the Play Services 8.3 API or newer, set // the issuer to "https://accounts.google.com". Otherwise, set the issuer to // "accounts.google.com". If you need to verify tokens from multiple sources, build // a GoogleIdTokenVerifier for each issuer and try them both. GoogleIdTokenVerifier verifierForNewAndroidClients = new GoogleIdTokenVerifier.Builder(UrlFetchTransport.getDefaultInstance(), jacksonFactory) .setAudience(Arrays.asList(CRLConstants.IOS_CLIENT_ID, CRLConstants.ANDROID_CLIENT_ID_RELEASE, CRLConstants.ANDROID_CLIENT_ID_DEBUG)) .setIssuer("https://accounts.google.com") .build(); GoogleIdTokenVerifier verifierForOtherClients = new GoogleIdTokenVerifier.Builder(UrlFetchTransport.getDefaultInstance(), jacksonFactory) .setAudience(Arrays.asList(CRLConstants.IOS_CLIENT_ID, CRLConstants.ANDROID_CLIENT_ID_RELEASE, CRLConstants.ANDROID_CLIENT_ID_DEBUG)) .setIssuer("accounts.google.com") .build(); // Custom Authenticator class for authenticating google accounts @Override public User authenticate(HttpServletRequest request) { String token = request.getHeader("google_id_token"); if (token != null) { GoogleIdToken idToken = null; try { idToken = verifierForNewAndroidClients.verify(token); if(idToken == null) idToken = verifierForOtherClients.verify(token); if (idToken != null) { GoogleIdToken.Payload payload = idToken.getPayload(); // Get profile information from payload String userId = payload.getSubject(); String email = payload.getEmail(); return new GoogleUser(userId, email); } else { log.warning("Invalid Google ID token."); } } catch (GeneralSecurityException e) { log.warning(e.getLocalizedMessage()); } catch (IOException e) { log.warning(e.getLocalizedMessage()); } } return null; } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.