Доступ к идентификатору/имени пользователя учетной записи Google через Android

Как вы получаете доступ к идентификатору пользователя/имени пользователя Google в коде? Я создаю приложение, которое будет вызывать веб-службу для хранения данных, и я хочу идентифицировать личность человека, отправляющего данные.

Ответы

Ответ 1

Я столкнулся с той же проблемой, и эти две ссылки решили для меня:

Первый из них: Как получить зарегистрированную учетную запись Google на телефонах Android?

Что представляет собой код для поиска учетных записей, связанных с телефоном. В основном вам понадобится что-то вроде этого:

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();

И для добавления разрешений в AndroidManifest.xml

<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>

Кроме того, если вы используете эмулятор, следующая ссылка поможет вам настроить его с помощью учетной записи: Android-эмулятор - проблема с созданием учетных записей пользователей

В принципе, в нем говорится, что вы должны создать Android-устройство на основе уровня API, а не версию SDK (как правило, это делается).

Ответ 2

Этот метод позволяет получить имя пользователя 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;
}

просто этот вызов метода....

И получить пользователя Google в Gmail id::

 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;
        }
    }

После добавления разрешения в манифесте

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

Ответ 3

Получить информацию профиля для пользователя с подпиской  Используйте метод GoogleSignInResult.getSignInAccount, чтобы запросить информацию о профиле для текущего пользователя. Вы можете вызвать метод getSignInAccount после успешного завершения входа.

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();

Ответ 4

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
}

Ответ 5

Существует образец из google, в котором перечислены существующие учетные записи google и генерируется токен доступа при выборе, вы можете отправить маркер доступа на сервер, чтобы получить связанные с ним данные, чтобы идентифицировать пользователя.

Вы также можете получить идентификатор электронной почты из токена доступа, для этого вам необходимо изменить SCOPE

Пройдите Мой пост

Ответ 6

String name = android.os.Build.USER;

if (!TextUtils.isEmpty(name)) {
    nameEdit.setText(name);
}