ver tienes sesion servicio permiso para integrar inicio google cuenta con clientes claves oauth google-api userinfo

tienes - oauth login google



Obtener información del usuario a través de la API de Google (6)

¿Es posible obtener información del perfil del usuario a través de Google API? Si es posible, ¿qué API debería usar?

Estoy interesado en dicha información:

También sería genial obtener otra información del perfil del usuario.




Estoy usando PHP y lo solucioné usando la versión 1.1.4 de google-api-php-client

Suponiendo que se utiliza el siguiente código para redirigir a un usuario a la página de autenticación de Google:

$client = new Google_Client(); $client->setAuthConfigFile(''/path/to/config/file/here''); $client->setRedirectUri(''https://redirect/url/here''); $client->setAccessType(''offline''); //optional $client->setScopes([''profile'']); //or email $auth_url = $client->createAuthUrl(); header(''Location: '' . filter_var($auth_url, FILTER_SANITIZE_URL)); exit();

Suponiendo que se devuelve un código de autenticación válido a redirect_url , lo siguiente generará un token del código de autenticación y también proporcionará información básica del perfil:

//assuming a successful authentication code is return $authentication_code = ''code-returned-by-google''; $client = new Google_Client(); //.... configure $client object code goes here $client->authenticate($authentication_code); $token_data = $client->getAccessToken(); //get user email address $google_oauth =new Google_Service_Oauth2($client); $google_account_email = $google_oauth->userinfo->get()->email; //$google_oauth->userinfo->get()->familyName; //$google_oauth->userinfo->get()->givenName; //$google_oauth->userinfo->get()->name; //$google_oauth->userinfo->get()->gender; //$google_oauth->userinfo->get()->picture; //profile picture

Sin embargo, la ubicación no se devuelve. Las nuevas cuentas de YouTube no tienen nombres de usuario específicos de YouTube


Estoy usando API de Google para .Net, pero sin duda puede encontrar la misma manera de obtener esta información usando otra versión de API. Como se menciona user872858 , el alcance userinfo.profile ha quedado obsoleto ( artículo de google ).

Para obtener información de perfil de usuario, utilizo el siguiente código (parte reescrita del ejemplo de 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(); }

Entonces, puedes acceder a casi cualquier cosa usando userProfile.

ACTUALIZACIÓN: Para que este código funcione, debe usar los ámbitos adecuados en el botón de inicio de sesión de Google. Por ejemplo mi botón:

<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>



alcance: https://www.googleapis.com/auth/userinfo.profile

return youraccess_token = access_token

obtener https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token

obtendrá json:

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

Para Tahir Yasin:

Este es un ejemplo de php.
Puede usar la función json_decode para obtener la matriz userInfo.

$q = ''https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxx''; $json = file_get_contents($q); $userInfoArray = json_decode($json,true); $googleEmail = $userInfoArray[''email'']; $googleFirstName = $userInfoArray[''given_name'']; $googleLastName = $userInfoArray[''family_name''];