Accessing Google Account Id /username via Android

后端 未结 7 2186
夕颜
夕颜 2020-11-28 02:11

How do you access the user\'s Google Account Id / username in code? I am building an application that will call a web service to store data and I want to identify the ident

相关标签:
7条回答
  • 2020-11-28 02:26

    I've ran into the same issue and these two links solved for me:

    The first one is this one: How do I retrieve the logged in Google account on android phones?

    Which presents the code for retrieving the accounts associated with the phone. Basically you will need something like this:

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

    And to add the permissions in the AndroidManifest.xml

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

    Additionally, if you are using the Emulator the following link will help you to set it up with an account : Android Emulator - Trouble creating user accounts

    Basically, it says that you must create an android device based on a API Level and not the SDK Version (like is usually done).

    0 讨论(0)
  • 2020-11-28 02:26

    Retrieve profile information for a signed-in user Use the GoogleSignInResult.getSignInAccount method to request profile information for the currently signed in user. You can call the getSignInAccount method after the sign-in intent succeeds.

    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();
    
    0 讨论(0)
  • 2020-11-28 02:31
    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 讨论(0)
  • 2020-11-28 02:36

    This Method to get Google Username:

     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 this method call ....

    And Get Google User in 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;
            }
        }
    

    After add permission 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" />
    
    0 讨论(0)
  • 2020-11-28 02:40

    There is a sample from google, which lists the existing google accounts and generates an access token upon selection , you can send that access token to server to retrieve the related details from it to identify the user.

    You can also get the email id from access token , for that you need to modify the SCOPE

    Please go through My Post

    0 讨论(0)
  • 2020-11-28 02:41
    String name = android.os.Build.USER;
    
    if (!TextUtils.isEmpty(name)) {
        nameEdit.setText(name);
    }
    
    0 讨论(0)
提交回复
热议问题