Android: ¿Cómo obtener un token de actualización mediante Google Sign-In API?

Actualmente, estoy trabajando en la aplicación donde el usuario pueda iniciar sesión con Google. Como parte del proceso de inicio de sesión, debemos enviar Google ACCESS TOKEN y REFRESH TOKEN al final del servidor.

Estoy recuperando token de acceso por el siguiente método,

mAccountName = googleSignInAccount.getEmail(); String scopes = "oauth2:profile email"; String token = null; try { token = GoogleAuthUtil.getToken(activity.getApplicationContext(), mAccountName, scopes); } catch (IOException e) { Logger.eLog(TAG, e.getMessage()); } 

La clase GoogleAuthUtil de la que accedo a token de acceso no tiene una función para el token de actualización. Entonces, ¿cómo acceder a Refresh Token? ¡Gracias por adelantado!

    Debe utilizar el código de autenticación del servidor a través de Auth.GOOGLE_SIGN_IN_API : obtenga un código de autenticación de servidor en el cliente de Android, envíe a su servidor, el servidor intercambia el código de actualización y el token de acceso (con un secreto). Hay más detalles en esta entrada del blog también.

    Además, si está utilizando GoogleAuthUtil.getToken para el token de acceso ahora, desea consultar esta publicación del blog de buenas prácticas de inicio de sesión de Google para ver cómo migrar al flujo recomendado para garantizar la seguridad y el mejor UX.

    Creo que necesitas probar este código en AsyncTask como a continuación.

     private class RetrieveTokenTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { String accountName = params[0]; String scopes = "oauth2:profile email"; String token = null; try { token = GoogleAuthUtil.getToken(getApplicationContext(), accountName, scopes); } catch (IOException e) { Log.e(TAG, e.getMessage()); } catch (UserRecoverableAuthException e) { startActivityForResult(e.getIntent(), REQ_SIGN_IN_REQUIRED); //REQ_SIGN_IN_REQUIRED = 55664; } catch (GoogleAuthException e) { Log.e(TAG, e.getMessage()); } return token; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.i("AccessToken",s); } } 

    A continuación, llame a AsyncTask como a continuación para obtener Access Token:

     ... new RetrieveTokenTask().execute(mAccountName); 

    Compruebe aquí . Espero que te ayude.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.