Token null Iniciar sesión Cuenta de Google
Estoy siguiendo el ejemplo de google para obtener el token, pero sin éxito. Siempre falla al adquirir el token. Esta es la última manera que Google muestra en los desarrolladores de su página Creo que el error no está en mi código
private String CLIENTE_ID = "...apps.googleusercontent.com"; GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(CLIENTE_ID) .requestEmail() .build(); // Build GoogleAPIClient with the Google Sign-In API and the above options. mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); imgBGoogle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, 9002); } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); if (requestCode == 9002) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); handleSignInResult(result, data); } if (requestCode == 9002) { // [START get_id_token] GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); Log.d(TAG, "onActivityResult:GET_TOKEN:success:" + result.getStatus().isSuccess()); if (result.isSuccess()) { GoogleSignInAccount acct = result.getSignInAccount(); String idToken = acct.getIdToken(); // Show signed-in UI. Log.d(TAG, "idToken:" + idToken); Log.d(TAG, "\n "); // TODO(user): send token to server and validate server-side } else { // Show signed-out UI. Log.d(TAG, "idToken: fail"); } // [END get_id_token] } } private void handleSignInResult(GoogleSignInResult result, Intent data) { getToken1(data); getToken2(result); String BOOKS_API_SCOPE = "https://www.googleapis.com/auth/books"; String GPLUS_SCOPE = "https://www.googleapis.com/auth/plus.login"; String mScopes = "oauth2:" + BOOKS_API_SCOPE + " " + GPLUS_SCOPE; } void getToken1(Intent data){ GoogleSignInResult a = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (a.isSuccess()) { Log.d(TAG, "TOKEN 1: " + a.getSignInAccount().getIdToken()); Log.d(TAG, "DISPLAY NAME 1: " +a.getSignInAccount().getDisplayName()); Log.d(TAG, "ID 1: " + a.getSignInAccount().getId()+"\n "); }else{ Log.d(TAG, "ID 1: falhou"+"\n "); } } void getToken2(GoogleSignInResult result){ if (result.isSuccess()) { GoogleSignInAccount acct = result.getSignInAccount(); Log.d(TAG, "TOKEN 2: " + acct.getIdToken()); Log.d(TAG, "DISPLAY NAME 2: " + acct.getDisplayName()); Log.d(TAG, "ID 2: " + acct.getId()+"\n "); }else{ Log.d(TAG, "ID 2: falhou"+"\n "); } }
¿Cómo puedo obtener el token? ¿Alguien puede ayudarme?
- Cómo asignar una imagen (mapa de bits) mediante programación a un contacto?
- Problema con la calefacción de cristal de Google
- Cómo traducir de un idioma a otro en Android
- Causa de inicio de sesión de Google: Causado por: java.util.ConcurrentModificationException
- FirebaseAuthInvalidCredentialsException al usar "Una cuenta por dirección de correo electrónico"
- Vector sin conexión TileProvider que extiende google map api v2 en android
- Android Google Auth Iniciar sesión handleSignInResult: false
- Utilizar la autenticación de inicio de sesión de cuenta de Google para aplicaciones en Android
- ¿Cómo conecto las aplicaciones de Android con hojas de cálculo de hojas de cálculo de Google?
- Android: GoogleAuthUtil.getToken - ¿De dónde viene el objeto de cuenta que se supone que viene?
- Uso de Google Docs y Google Spreadsheet API para Android
- ¿Puedo usar AccountManager para permitir que los usuarios inicien sesión con su cuenta de Google?
- Obtención de eventos del calendario
Acabo de tropezar con el problema similar, no estaba usando un cliente OAuth web, funcionó con la base de firebase y pensé que esta solución más simple podría ser útil para alguien.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build();
No hay necesidad de definir default_web_client_id, funcionará como pegado. Es una cadena generada por google-services plugin.
Parece que su código está bien, pero trate de seguir la guía oficial exactamente. Funcionó para mí: http://android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html
Asegúrese de usar el token web, trate de crear uno nuevo y utilícelo.
- Disposiciones anidadas de Android
- Android: abierto fallido: ENOENT (No hay tal archivo o directorio)