Zugriff auf die Google-Konto-ID / den Benutzernamen über Android


77

Wie greifen Sie im Code auf die Google-Konto-ID / den Benutzernamen des Nutzers zu? Ich erstelle eine Anwendung, die einen Webdienst zum Speichern von Daten aufruft, und möchte die Identität der Person identifizieren, die die Daten übermittelt.


3
Holen Sie sich den Benutzernamen und die E-Mail- Adresse des
Mansukh Ahir

Es gibt auch eine Bibliothek für die Kontoverwaltung in Android hier .
Ali Nem

Antworten:


47

Ich bin auf dasselbe Problem gestoßen und diese beiden Links wurden für mich gelöst:

Der erste ist der folgende: Wie rufe ich das angemeldete Google-Konto auf Android-Handys ab?

Hier wird der Code zum Abrufen der mit dem Telefon verknüpften Konten angezeigt. Grundsätzlich benötigen Sie so etwas:

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

Und um die Berechtigungen in der AndroidManifest.xml hinzuzufügen

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

Wenn Sie den Emulator verwenden, können Sie ihn über den folgenden Link mit einem Konto einrichten: Android Emulator - Probleme beim Erstellen von Benutzerkonten

Grundsätzlich heißt es, dass Sie ein Android-Gerät basierend auf einer API-Ebene und nicht der SDK-Version erstellen müssen (wie dies normalerweise der Fall ist).


Wie kann ich den Account-Avatar bekommen? Vielen Dank`
Urchin

@ Urchin das ist ein bisschen außerhalb des Rahmens dieser Frage, aber ich glaube, diese andere könnte dir helfen. stackoverflow.com/questions/17905066/…
Fabricio Buzeto

1
Ein bisschen spät, aber dies kann jemandem helfen, wenn Sie versuchen, den Avatar des Kontos zu erhalten ( stackoverflow.com/questions/9128700/… )
Abdelilah El Aissaoui

Es gibt auch eine Bibliothek für die Kontoverwaltung in Android hier .
Ali Nem

10

Diese Methode, um den Google-Nutzernamen zu erhalten:

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

einfach diese Methode aufrufen ....

Und holen Sie sich den Google-Nutzer in die Google Mail-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;
        }
    }

Nach dem Hinzufügen der Erlaubnis im Manifest;

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

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

7
Warum sind Berechtigungen für den Internet- und Zugriffsnetzwerkstatus erforderlich?
Chitrang

6

Profilinformationen für einen angemeldeten Benutzer abrufen Verwenden Sie die Methode GoogleSignInResult.getSignInAccount, um Profilinformationen für den aktuell angemeldeten Benutzer anzufordern. Sie können die Methode getSignInAccount aufrufen, nachdem die Anmeldeabsicht erfolgreich war.

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

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

Welche Bibliothek verwenden Sie ? Ich erhalte das Plus Symbol Kann nicht aufgelöst werden .
Choletski

Dies basiert auf der Verwendung der Google+ API, die für die meisten Entwickler wahrscheinlich zu exotisch ist
GregD

2

Verwendete diese Zeilen:

AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");

Die Länge der Array-Konten beträgt immer 0.


Bitte verwenden Sie ein Android-Gerät unter Android 6.0 - 6.… (API-Level 23-…), da für Geräte höherer Versionen Laufzeitberechtigungen erforderlich sind und immer die Länge 0 zurückgegeben wird.
Mandeep Yadav

0

Es gibt ein Beispiel von Google, das die vorhandenen Google-Konten auflistet und bei Auswahl ein Zugriffstoken generiert. Sie können dieses Zugriffstoken an den Server senden, um die zugehörigen Details abzurufen und den Benutzer zu identifizieren.

Sie können die E-Mail-ID auch vom Zugriffstoken abrufen. Dazu müssen Sie den GELTUNGSBEREICH ändern

Bitte gehen Sie durch meinen Beitrag


-3
String name = android.os.Build.USER;

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

2
Nun, ich habe es versucht und es gab mir "dpi" zurück. Ganz klar nicht der Name des Benutzers.
Nandan Sawant
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.