使用 PHP API 库以 Google 登录

Login with Google using PHP API library

我已经下载了 Google API PHP 我正在用 "log in with Google" script.every 试用它,我认为我工作正常。但我也想要密码字段,以保存我的数据库以作为我的门户网站的普通用户进一步登录。 我使用了以下代码:

$service = new Google_Service_Oauth2($client);

if ($client->getAccessToken()) 
    {
          //For logged in user, get details from google using access token
          $user         = $service->userinfo->get();
          $user_id      = $user['id'];}
//list all user details
    echo '<pre>';
    print_r($user);
    echo '</pre>';

$user 的输出是:

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

    [email] => example@gmail.com
    [familyName] => man
    [gender] => male
    [givenName] => deadman
    [hd] => 
    [id] => 123456789012345
    [link] => https://plus.google.com/101978174620808672845
    [locale] => en-GB
    [name] => dead man
    [picture] => https://******************/photo.jpg
    [verifiedEmail] => 1
    [modelData:protected] => Array
        (
            [verified_email] => 1
            [given_name] => dead
            [family_name] => man
        )

    [processed:protected] => Array
        (
        )

)

如何从 google 获取密码字段?

您无法在 google 身份验证或任何其他社交身份验证中获取用户的密码字段。这是为了用户安全。控制台中有一个 callback url 选项。如果 google 登录已通过身份验证,用户将被重定向到 url。

Google 登录的全部意义在于让您不要 为用户存储密码。用户能够使用他们的 Google 凭据访问您的站点 - Google 正在为您验证他们并告诉您用户是谁。 (请记住,Google 身份验证甚至可能不涉及您存储的密码。如果用户设置了双因素身份验证,则不涉及密码。)

如果您想让您的用户在没有 Google 帐户的情况下登录您的站点,或者除了他们的 Google 帐户外,您可能还想提示他们输入密码 用于您的站点,但这完全在 Google 的身份验证系统之外。

如果您认为需要密码才能访问 Google 上的用户信息 - 您不需要。对于大多数服务,您应该使用 OAuth 2,它为您和您的用户提供了一种更安全的方式来管理您可以使用 Google 的服务做什么。