Get user name, avatar from google account
Asked Answered
U

3

5

I'm developing an module that use GoogleAccountCredential to login, upload & download a file to GoogleDrive.

I want to get user first, last name and avatar of google account for display on my login feature.

I've try

 GoogleAccountCredential.getAccountName()

But It return only account name.

And see about OAuth 2.0 but not sure It can provide which I needed.

Don't know where to get those infomation, any suggestion also help me. It's awsome if have some examples

Unnecessarily answered 28/7, 2013 at 4:45 Comment(0)
H
12

ianhanniballake's answer works, but there is a better way to do it. You don't need Google+ sign in to get user info.

Authorize with scope https://www.googleapis.com/auth/userinfo.profile

Make GET request to https://www.googleapis.com/oauth2/v1/userinfo?alt=json

You will get

{
 "id": "xx",
 "name": "xx",
 "given_name": "xx",
 "family_name": "xx",
 "link": "xx",
 "picture": "xx",
 "gender": "xx",
 "locale": "xx"
}

There are also language specific working codes in the following documentation: Retrieving and Using OAuth 2.0 Credentials.

Have fun!

Hereafter answered 28/7, 2013 at 5:48 Comment(3)
Sorry for late reply, I don't want login using google sign in, just use google email ID (like [email protected]) or google account added on the phone. Can I do that? I've tried your link but It return Invalid request. I tried with this call: "String res = MyClass.getUserInfo(MyClass.getCredentials(MyClass.getAuthorizationUrl("[email protected]", null), null)).getFamilyName();"Unnecessarily
Just get first, last name. I don't want avatar anymoreUnnecessarily
User must be logged in and authorize you to access his/her user profile. Otherwise, it will be a serious privacy issue.Hereafter
M
4

To get this information, you must use Google+ Sign In, which gives you a PlusClient object on successful login. You can then use PlusClient.getCurrentPerson to retrieve a Person (who has a getName() and getImage() method) and PlusClient.getAccountName() to get the accountName, which you would use in the same way as if you had used GoogleAccountCredential:

String accessToken = GoogleAuthUtil.getToken(context, accountName, OAUTH2_SCOPE);
final GoogleCredential credential = new GoogleCredential();
credential.setAccessToken(accessToken);
Drive driveConnection = new Drive.Builder(AndroidHttp.newCompatibleTransport(), 
    new GsonFactory(), credential).setApplicationName(APP_NAME).build();
Mascagni answered 28/7, 2013 at 5:7 Comment(1)
yes you MUST login,that's the only way to get the PlusClient object which you can then go on to use to get whatever information are available to your app.(with permission of course)Airglow
J
2

Looks like Google has deprecated the userinfo endpoint that JunYoung mentioned in favor of the Google+ Sign-in. They will stop supporting the userinfo endpoint by August, 2014. See the link below for details:

https://developers.google.com/+/api/auth-migration

Jargon answered 1/5, 2014 at 17:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.