saber - Acceder al Id. De cuenta/nombre de usuario de Google a través de Android
recuperar cuenta de google play juegos (7)
Recuperar información de perfil para un usuario con sesión iniciada Use el método GoogleSignInResult.getSignInAccount para solicitar información de perfil para el usuario actualmente conectado. Puede llamar al método getSignInAccount después de que la intención de inicio de sesión sea exitosa.
GoogleSignInResult result =
Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personGivenName = acct.getGivenName();
String personFamilyName = acct.getFamilyName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();
¿Cómo se accede al ID / nombre de usuario de la cuenta de Google del usuario en el código? Estoy creando una aplicación que llamará a un servicio web para almacenar datos y quiero identificar la identidad de la persona que envía los datos.
Este método para obtener el nombre de usuario de Google:
public String getUsername() {
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> possibleEmails = new LinkedList<String>();
for (Account account : accounts) {
// TODO: Check possibleEmail against an email regex or treat
// account.name as an email address only for certain account.type
// values.
possibleEmails.add(account.name);
}
if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
String email = possibleEmails.get(0);
String[] parts = email.split("@");
if (parts.length > 0 && parts[0] != null)
return parts[0];
else
return null;
} else
return null;
}
simple este método llamada ....
Y obtenga el usuario de Google en la cuenta de Gmail ::
accounts = AccountManager.get(this).getAccounts();
Log.e("", "Size: " + accounts.length);
for (Account account : accounts) {
String possibleEmail = account.name;
String type = account.type;
if (type.equals("com.google")) {
strGmail = possibleEmail;
Log.e("", "Emails: " + strGmail);
break;
}
}
Después de agregar permiso en manifiesto;
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Hay una muestra de google, que enumera las cuentas de google existentes y genera un token de acceso al momento de la selección, puede enviar ese token de acceso al servidor para recuperar los detalles relacionados para identificar al usuario.
También puede obtener el ID de correo electrónico del token de acceso, para eso debe modificar el ALCANCE
Por favor, revisa Mi publicación
Me encontré con el mismo problema y estos dos enlaces resueltos para mí:
El primero es este: ¿Cómo recupero la cuenta de Google registrada en teléfonos Android?
Que presenta el código para recuperar las cuentas asociadas con el teléfono. Básicamente necesitarás algo como esto:
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
Y para agregar los permisos en AndroidManifest.xml
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
Además, si está utilizando el emulador, el siguiente enlace lo ayudará a configurarlo con una cuenta: Emulador de Android: problemas para crear cuentas de usuario
Básicamente, dice que debes crear un dispositivo Android basado en un Nivel API y no en la Versión SDK (como suele hacerse).
Usó estas líneas:
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
la longitud de las cuentas de matriz siempre es 0.
String name = android.os.Build.USER;
if (!TextUtils.isEmpty(name)) {
nameEdit.setText(name);
}
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String userid=currentPerson.getId(); //BY THIS CODE YOU CAN GET CURRENT LOGIN USER ID
}