2010-02-11 8 views
66

Wie greifen Sie auf die Google-Kontonummer/den Nutzernamen des Nutzers im Code zu? Ich erstelle eine Anwendung, die einen Webdienst zum Speichern von Daten aufruft, und ich möchte die Identität der Person angeben, die die Daten übermittelt.Zugriff auf die Google-Kontonummer/den Nutzernamen über Android

+3

Get Google-Konto Benutzernamen und E-Mail http://stackoverflow.com/a/31538053/4395114 –

+0

Es gibt auch eine Bibliothek für die Kontoverwaltung in android [hier] (http: // stackoverflow.com/questions/24227274/how-to-add-programmatically-a-custom-account-in-android/39686087#39686087). –

Antwort

39

Ich habe in der gleichen Ausgabe lief und diese beiden für mich gelöst Links:

Die erste ist diese: How do I retrieve the logged in Google account on android phones?

, die den Code stellt für die Konten Abrufen mit dem Telefon verbunden. Grundsätzlich werden Sie so etwas wie dieses benötigen:

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

Und die Berechtigungen in der AndroidManifest.xml

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

Zusätzlich zu addieren, wenn Sie den Emulator den folgenden Link verwenden wird Ihnen helfen, um es einzurichten mit einem Konto: Android Emulator - Trouble creating user accounts

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

+0

Verwenden Sie diese: - http://StackOverflow.com/A/31538053/4395114 –

+0

Wie kann ich den Account Avatar bekommen?Vielen Dank! – Urchin

+0

@Urchin das ist ein wenig außerhalb des Umfangs dieser Frage, aber ich glaube, dass dieser andere dir helfen könnte. http://stackoverflow.com/questions/17905066/get-user-name-avatar-from-google-account –

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 zur Identifizierung des Benutzers abzurufen.

Sie können auch die E-Mail-ID von Zugriffstoken erhalten, für die Sie die SCOPE

Bitte gehen Sie durch My Post

8

Diese Methode zu erhalten Google Benutzername ändern müssen:

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 dieser Methodenaufruf ....

Und Google-Benutzer in der Gmail Identifikation erhalten ::

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 Berechtigung in 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" /> 
+4

Warum sind die Zugriffsrechte für interenet und access network erforderlich? – Chitrang

-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. Offensichtlich nicht der Name des Benutzers. –

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 
} 
+0

Welche lib verwendest du, bekomme ich 'Plus' _Cannot resolve symbol_? – Choletski

+0

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

3

Retrieve-Profilinformationen für ein angemeldeten Nutzers verwenden, um die GoogleSignInResult.getSignInAccount Verfahren Profilinformationen für die derzeit in Benutzer signiert anzufordern. Sie können die getSignInAccount-Methode aufrufen, nachdem die Anmeldung erfolgreich abgeschlossen wurde.

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