oauth client id - Nutzerinformationen über Google API abrufen




3 Answers

Fügen Sie dies zum Bereich hinzu - https://www.googleapis.com/auth/userinfo.profile

Nach der Autorisierung erhalten Sie die Informationen von - https://www.googleapis.com/oauth2/v1/userinfo?alt=json

Es hat jede Menge Zeug - einschließlich Name, öffentliche Profil-URL, Geschlecht, Foto usw.

token generator

Ist es möglich, Informationen aus dem Nutzerprofil über Google API zu erhalten? Wenn es möglich ist, welche API sollte ich verwenden?

Ich bin an solchen Informationen interessiert:

Es wäre auch cool, andere Informationen aus dem Benutzerprofil zu erhalten.







Ich benutze Google API für .Net, aber zweifellos können Sie den gleichen Weg finden, um diese Informationen mit anderen API-Versionen zu erhalten. Als user872858 wurde erwähnt, dass der Bereich userinfo.profile veraltet ist ( Google-Artikel ).

Um Benutzerprofilinformationen zu erhalten, verwende ich folgenden Code (umgeschriebener Teil aus dem Beispiel von Google ):

IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(
                                  new GoogleAuthorizationCodeFlow.Initializer
                                      {
                                            ClientSecrets = Secrets,
                                            Scopes = new[] { PlusService.Scope.PlusLogin,"https://www.googleapis.com/auth/plus.profile.emails.read"  }
                                       });    
TokenResponse _token = flow.ExchangeCodeForTokenAsync("", code, "postmessage", 
                              CancellationToken.None).Result;

                    // Create an authorization state from the returned token.
                    context.Session["authState"] = _token;

                    // Get tokeninfo for the access token if you want to verify.
                    Oauth2Service service = new Oauth2Service(
                     new Google.Apis.Services.BaseClientService.Initializer());
                    Oauth2Service.TokeninfoRequest request = service.Tokeninfo();
                    request.AccessToken = _token.AccessToken;
                    Tokeninfo info = request.Execute();
                    if (info.VerifiedEmail.HasValue && info.VerifiedEmail.Value)
                    {
                        flow = new GoogleAuthorizationCodeFlow(
                                    new GoogleAuthorizationCodeFlow.Initializer
                                         {
                                             ClientSecrets = Secrets,
                                             Scopes = new[] { PlusService.Scope.PlusLogin }
                                          });

                        UserCredential credential = new UserCredential(flow, 
                                                              "me", _token);
                        _token = credential.Token;
                        _ps = new PlusService(
                              new Google.Apis.Services.BaseClientService.Initializer()
                               {
                                   ApplicationName = "Your app name",
                                   HttpClientInitializer = credential
                               });
                        Person userProfile = _ps.People.Get("me").Execute();
                    }

Dann können Sie mit userProfile auf fast alles zugreifen.

UPDATE: Um diesen Code zum Laufen zu bringen, müssen Sie die entsprechenden Bereiche auf der Google-Anmeldeschaltfläche verwenden. Zum Beispiel mein Knopf:

     <button class="g-signin"
             data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read"
             data-clientid="646361778467-nb2uipj05c4adlk0vo66k96bv8inqles.apps.googleusercontent.com"
             data-accesstype="offline"
             data-redirecturi="postmessage"
             data-theme="dark"
             data-callback="onSignInCallback"
             data-cookiepolicy="single_host_origin"
             data-width="iconOnly">
     </button>



Related