получить данные пользователя Google с помощью OAuth

Я впервые внедряю API входа в Google. Он отлично работает, но я могу получить только адреса электронной почты. Я пробовал другие способы, но безуспешно. Как я могу получить другие данные пользователя, такие как имя пользователя?

include('/../src/Google/autoload.php');


        /*         * **********************************************
          ATTENTION: Fill in these values! Make sure
          the redirect URI is to this page, e.g:
          http://localhost:8080/user-example.php
         * ********************************************** */

        $client_id = 'bla-bla-bla';
        $client_secret = 'bla-bla-bla';
        $redirect_uri = 'bla-bla-bla/google_login';


        /*         * **********************************************
          Make an API request on behalf of a user. In
          this case we need to have a valid OAuth 2.0
          token for the user, so we need to send them
          through a login flow. To do this we need some
          information from our API console project.
         * ********************************************** */

        if (isset($_GET['code'])) {
            $client = new Google_Client();
            $client->setClientId($client_id);
            $client->setClientSecret($client_secret);
            $client->setRedirectUri($redirect_uri);

            $client->setScopes(array('https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile'));

            $client->authenticate($_GET['code']);
           
            $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
            $google_oauth = new Google_Service_Oauth2($client);
            print_r($google_ouath);//give error Undefined variable: google_ouath
            print_r($google_ouath->userinfo); //give error Undefined variable: google_ouath
            print_r($google_ouath->userinfo>get());//give error Undefined variable: google_ouath
            $google_account_email = $google_oauth->userinfo->get()->email; //works fine
            //$google_account_getDisplayName = $google_ouath->userinfo->get()->DisplayName;
            //$google_account_givenname = $google_ouath->userinfo->get()->givenName;
            //$google_account_name = $google_ouath->userinfo->get()->name;
            echo '<pre>';

            print_r($google_account_email);

            echo '</pre>';
            exit;


person YuvRaj    schedule 27.10.2015    source источник


Ответы (1)


Это из-за орфографической ошибки в именах переменных здесь:

print_r($google_ouath);//give error Undefined variable: google_ouath
print_r($google_ouath->userinfo); //give error Undefined variable: google_ouath
print_r($google_ouath->userinfo>get());//give error Undefined variable: google_ouath

Имя переменной google_ouath должно быть google_oauth, т. е. a и u следует поменять местами, поэтому оно становится таким:

print_r($google_oauth);
print_r($google_oauth->userinfo);
print_r($google_oauth->userinfo>get());

Вы также должны избавиться от устаревших длинных имен областей:

$client->setScopes(array('https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile'));

и используйте сокращенную и совместимую с OpenID Connect форму:

$client->setScopes(array('email', 'profile'));
person Hans Z.    schedule 27.10.2015