通过Android访问Google帐户ID /用户名


Answers:


47

我遇到了同样的问题,这两个链接为我解决了:

第一个是这个:如何在Android手机上检索已登录的Google帐户?

其中显示了用于检索与手机关联的帐户的代码。基本上,您将需要以下内容:

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模拟器-创建用户帐户时遇到问题

基本上,它说您必须基于API级别而不是SDK版本创建android设备(通常这样做)。


我如何获得帐户头像?非常感谢您
Urchin

@Urchin这有点超出此问题的范围,但是我相信其他人也可以帮助您。stackoverflow.com/questions/17905066/...
法布里西奥Buzeto

1
有点晚了,但是这可能会帮助别人,如果你想获得帐户的化身(stackoverflow.com/questions/9128700/...
Abdelilah萨尔瓦多艾萨维

也有在Android的帐户管理库在这里
阿里·尼姆

10

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

简单的此方法调用....

并在Gmail ID中获取Google用户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" />

7
为什么需要互连网和访问网络状态权限?
Chitrang 2015年

6

检索已登录用户的配置文件信息使用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();

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
}

您使用的是什么lib,我Plus 无法解析符号
Choletski '16

这基于使用Google+ API的情况,对于大多数开发人员而言,这可能太
陌生

2

使用了以下这些行:

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

数组帐户的长度始终为0。


请使用Android设备下面在Android 6.0 - 6 ...(API级别23- ...),因为高版本的设备需要运行时的权限,它将始终返回长度为0
Mandeep亚达夫

0

有一个来自google的示例,该示例列出了现有的google帐户并在选择后生成了访问令牌,您可以将该访问令牌发送到服务器以从中检索相关的详细信息以识别用户。

您还可以从访问令牌中获取电子邮件ID,因为您需要修改SCOPE

请浏览我的帖子


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.