Accès à Google Account Id / username via Android
comment accédez-vous au Code D'identification de Compte Google de L'utilisateur? Je construis une application qui appellera un service web pour stocker des données et je veux identifier l'identité de la personne qui soumet les données.
7 réponses
j'ai rencontré le même problème et ces deux liens résolus pour moi:
le premier est celui-ci: Comment puis-je récupérer le compte Google connecté sur les téléphones android?
qui présente le code pour récupérer les comptes associés au téléphone. Fondamentalement, vous aurez besoin de quelque chose comme ceci:
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
et d'ajouter les permissions dans le AndroidManifest.xml
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
en outre, si vous utilisez L'émulateur le lien suivant vous aidera à le configurer avec un compte: émulateur Android-difficulté à créer des comptes d'utilisateur
essentiellement, il est dit que vous devez créer un appareil android basé sur un niveau API et non la Version SDK (comme est généralement fait).
cette méthode pour obtenir Google nom D'utilisateur:
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 cet appel de méthode ....
et obtenir L'utilisateur Google dans 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;
}
}
après Ajouter permission dans le manifeste;
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
extraire des informations de profil pour un utilisateur inscrit Utilisez le GoogleSignInResult.méthode getSignInAccount pour demander des informations de profil pour l'utilisateur actuellement connecté. Vous pouvez appeler la méthode getSignInAccount après que l'intention de connexion a réussi.
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();
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
}
utilise ces lignes:
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
la longueur des comptes de tableaux est toujours 0.
il y a un échantillon de google, qui liste les comptes google existants et génère un token d'accès lors de la sélection , vous pouvez envoyer ce token d'accès au serveur pour récupérer les détails connexes à partir de lui pour identifier l'utilisateur.
vous pouvez également obtenir l'email id du token d'accès , pour que vous avez besoin de modifier la portée
s'il vous Plaît aller à travers Mon Post
String name = android.os.Build.USER;
if (!TextUtils.isEmpty(name)) {
nameEdit.setText(name);
}