Pregunta

Necesito obtener un token de acceso y enviarlo al servidor.Con ese servidor Token de acceso debe obtener todos los datos de usuario, como nombre, imagen de perfil y correo electrónico.

Puedo obtener un token de acceso usando scopes.plus_login y scopes.plus_me , pero con ese servidor Token de acceso no puede obtener el correo electrónico de usuario.

Aquí está mi código:

@Override
public void onConnected(Bundle arg0) {
    mSignInClicked = false;


    AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            String token = null;
            String scope = "oauth2:" + Scopes.PLUS_LOGIN + " " + Scopes.PLUS_ME;
            try {
                token = GoogleAuthUtil.getToken(
                        getApplicationContext(),
                        Plus.AccountApi.getAccountName(mGoogleApiClient),
                        scope);
                appUser.setToken(token);
            } catch (IOException transientEx) {
                // Network or server error, try later
                Log.e(TAG, transientEx.toString());
            } catch (UserRecoverableAuthException e) {
                // Recover (with e.getIntent())                
            } catch (GoogleAuthException authEx) {
                // The call is not ever expected to succeed
                // assuming you have already verified that 
                // Google Play services is installed.
                Log.e(TAG, authEx.toString());
            }

            return token;
        }

        @Override
        protected void onPostExecute(String token) {
            Log.i(TAG, "Access token retrieved:" + appUser.getToken());
            // Get user's information
        }

    };


}

¿Alguien sabe cómo resolver este problema?

¿Fue útil?

Solución

Te estás perdiendo el alcance

https://www.googleapis.com/auth/userinfo.email  

Probé los otros ámbitos y solo que uno parece devolver el correo electrónico de los usuarios.Puede probar los diferentes ámbitos y lo que devuelven aquí: personas: obtener .

Nota: No soy un programador de Android, probablemente tenga mejor suerte para descubrir cómo solicitar ese alcance con Android.Estoy buscando, pero no he podido encontrarlo.

Parece que el alcance podría ser un correo electrónico https://developers.google.com/+ / api / oauth # correo electrónico

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top