如何使用 Google API PHP SDK 获取用户信息

Posted

技术标签:

【中文标题】如何使用 Google API PHP SDK 获取用户信息【英文标题】:How to get user information with Google API PHP SDK 【发布时间】:2015-04-15 18:32:07 【问题描述】:

我正在尝试在我的网站上为拥有 Google 帐户的人添加登录选项。我已经能够实现这个 Facebook,但是在使用 Google 获取用户帐户信息时遇到了问题。

我正在使用位于此处的 Google php SDK:https://github.com/google/google-api-php-client

$client = new Google_Client();
$client->setClientId($this->ci->config->item('client_id', 'google'));
$client->setClientSecret($this->ci->config->item('client_secret', 'google'));
$client->setRedirectUri($this->ci->config->item('callback_uri', 'google'));
$client->addScope('https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.login');
$this->client->createAuthUrl();

但是现在我如何访问用户的电子邮件地址和其他基本信息?

我在 Google PHP SDK 中看到 getAccountInfo() 类中的 Google_Service_IdentityToolkit 方法。但是,它需要的参数是postBody,但我不确定如何获取/构建它。

【问题讨论】:

【参考方案1】:

这将返回一个 Google_Service_Oauth2_Userinfoplus 对象,其中包含您可能正在寻找的信息:

$oauth2 = new \Google_Service_Oauth2($client);
$userInfo = $oauth2->userinfo->get();
print_r($userInfo);

其中$clientGoogle_Client 的一个实例

输出:

Google_Service_Oauth2_Userinfoplus Object
(
    [internal_gapi_mappings:protected] => Array
        (
            [familyName] => family_name
            [givenName] => given_name
            [verifiedEmail] => verified_email
        )

    [email] => 
    [familyName] => 
    [gender] => 
    [givenName] => 
    [hd] => 
    [id] => 123456
    [link] => https://plus.google.com/123456
    [locale] => en-GB
    [name] => someguy
    [picture] => https://lh3.googleusercontent.com/-q1Smh9d8d0g/AAAAAAAAAAM/AAAAAAAAAAA/3YaY0XeTIPc/photo.jpg
    [verifiedEmail] => 
    [modelData:protected] => Array
        (
        )

    [processed:protected] => Array
        (
        )

)

另请注意,您还需要请求https://www.googleapis.com/auth/userinfo.profile 范围。

【讨论】:

点赞。你知道我怎样才能从用户那里得到一些额外的信息吗?即他的电话号码,他的地址等..!我应该使用任何特定的库吗? 很好的解决方案。一项技术性的想法...自一段时间以来,要在 Google_Client 中设置的基本登录范围应该只是“电子邮件”和/或“个人资料”(取决于您需要什么信息)。我认为,'googleapis.com/auth/userinfo.profile' 已被弃用,但为了向后兼容而保留。更多信息在官网developers.google.com/identity/protocols/…【参考方案2】:

您应该能够通过构造 Google_Service_OAuth2 对象来获取此信息,将 Google_Client 作为参数传递,然后从那里获取用户信息。

$oauth2 = new Google_Service_Oauth2($client);
$userInfo = $oauth2->userinfo;

【讨论】:

自从您发布此答案以来,案例似乎已经发生了变化。现在是Google_Service_Oauth2(小写a)和userinfo(小写i) @antriver 你确实解决了我的整个问题。使用 Wamp 时,区分大小写并不重要,当我将它移到灯上时,它就崩溃了。所以linux是强迫症,windows不在乎。

以上是关于如何使用 Google API PHP SDK 获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章

Google Ads API PHP 示例的区别

Google Adwords API 报告实用程序 - PHP - XML 无效?

Google Geolocation API 和 Google Maps Android SDK

PayPal Rest SDK API - 获取令牌

如何使用iOS和Swift从Google SDK获取附近的地点?

Google 登录 API - 如何使用 PHP 注销某人?