在本文中,我将解释如何在您的PHP网站中集成Google登录。 我们将使用Google OAuth API,这是一种将Google登录名添加到您的网站的简便而强大的方法。
作为Web用户,您可能已经经历了为不同站点管理不同帐户的麻烦-特别是当您具有用于不同服务的多个密码,并且某个网站要求您在其站点上创建另一个帐户时。
为了解决这个问题,您可以提供单点登录功能,以允许访问者使用其现有凭据在您的网站上开设一个帐户。 如今,许多网站都允许用户使用他们在Google,Facebook或其他流行服务上的现有帐户登录。 对于新用户而言,这是一种便捷的方式,可以在第三方站点上进行注册,而无需使用其他用户名和密码注册新帐户。
Google登录如何工作
首先,让我们了解Google登录在您网站上的工作流程。
在站点的登录页面上,用户可以选择两个选项来登录。第一个选项是提供用户名和密码(如果他们已经在您的站点中拥有帐户)。 另一种是使用他们现有的Google帐户登录您的网站。
当他们单击“ 使用Google登录”按钮时,它将启动Google登录流程并将用户带到Google网站进行登录。 到达那里后,他们将使用自己的Google凭据登录,然后将其重定向到同意页面。
在同意页面上,将要求用户授予与第三方网站共享其Google帐户信息的权限。 在这种情况下,第三方站点是他们要使用其Google帐户登录的站点。 将为他们提供两个选项:它们可以允许或拒绝。
一旦他们允许与第三方站点共享信息,它们将被带回到发起Google登录流程的第三方站点。
此时,用户已使用Google登录,并且第三方站点有权访问用户个人资料信息,该信息可用于创建帐户和进行用户登录。
这就是在您的网站上集成Google登录的基本流程。 在本文的其余部分,我们将在一个工作示例中使用PHP实现此登录流程。
设置用于Google登录的项目
在本节中,我们将介绍将Google登录名与您的PHP网站集成所需的基本设置。
创建一个Google API项目
首先,您需要使用Google创建一个应用程序,以便您可以通过Google注册您的网站。 它使您可以设置有关网站的基本信息以及一些技术细节。
使用Google登录后,打开Google Developers控制台 。 这将打开Google信息中心页,如以下屏幕截图所示。

从左上方菜单中,单击“ 选择项目”链接。 这将打开一个弹出窗口,如以下屏幕截图所示。

单击“ 新建项目”链接,它将要求您输入项目名称和其他详细信息。 如下例所示,填写必要的详细信息。

单击创建按钮以保存您的新项目。 您将被重定向到“ 仪表板”页面。 点击左侧栏中的凭据 ,然后转到OAuth同意屏幕标签。

在此页面上,您需要输入有关应用程序的详细信息,例如应用程序名称,徽标以及其他一些详细信息。 填写必要的详细信息并保存。 出于测试目的,只需输入应用程序名称即可。
接下来,单击左侧边栏中的凭据 。 这将显示“ 凭据”选项卡下的“ API凭据”框,如以下屏幕截图所示。

点击客户端凭据> OAuth客户端ID ,为我们的应用程序创建一组新的凭据。 这将为您显示一个屏幕,要求您选择适当的选项。 在本例中,选择Web应用程序选项,然后单击“ 创建”按钮。 系统将要求您提供有关您的应用程序的更多详细信息。

输入上面的屏幕截图中显示的详细信息并保存! 当然,您需要根据应用程序设置来设置重定向 URI 。 这是登录后将重定向用户的URL。
至此,我们已经创建了Google OAuth2客户端应用程序,现在我们应该能够使用该应用程序在我们的网站上集成Google登录信息。 请记下客户端ID和客户端密钥 价值观 在我们这一端的应用程序配置过程中将需要这样做。 在编辑应用程序时,您始终可以找到客户端ID和客户端密钥 。
安装Google PHP SDK客户端库
在本部分中,我们将看到如何安装Google PHP API客户端库。 您可以选择两个选项来安装它:
- 使用Composer。
- 手动下载并安装库文件。
作曲方式
如果您更喜欢使用Composer进行安装,则只需运行以下命令。
$composer require google/apiclient:"^2.0"
就是这样!
下载版本
如果您不想使用Composer,也可以从官方API页面下载最新的稳定版本。
在我的示例中,我只是使用了Composer。
如果您继续这样做,那么现在您应该已经配置了Google应用程序并安装了Google PHP API客户端库。 在下一个也是最后一个部分,我们将在PHP网站中看到如何使用此库。
客户端库集成
回想一下,在配置Google应用程序时,我们必须在应用程序配置中提供重定向URI ,并将其设置为重定向到http://localhost/redirect.php 。 现在是时候创建redirect.php文件了。
继续并使用以下内容创建redirect.php 。
<?php
require_once 'vendor/autoload.php';
// init configuration
$clientID = '<YOUR_CLIENT_ID>';
$clientSecret = '<YOUR_CLIENT_SECRET>';
$redirectUri = '<REDIRECT_URI>';
// create Client Request to access Google API
$client = new Google_Client();
$client->setClientId($clientID);
$client->setClientSecret($clientSecret);
$client->setRedirectUri($redirectUri);
$client->addScope("email");
$client->addScope("profile");
// authenticate code from Google OAuth Flow
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$client->setAccessToken($token['access_token']);
// get profile info
$google_oauth = new Google_Service_Oauth2($client);
$google_account_info = $google_oauth->userinfo->get();
$email = $google_account_info->email;
$name = $google_account_info->name;
// now you can use this profile info to create account in your website and make user logged in.
} else {
echo "<a href='".$client->createAuthUrl()."'>Google Login</a>";
}
?>
让我们看一下代码的关键部分。
我们需要做的第一件事是包括autoload.php文件。 这是Composer的一部分,可确保自动加载我们在脚本中使用的类。
require_once 'vendor/autoload.php';
接下来,有一个配置部分,它通过设置必要的设置来初始化应用程序配置。 当然,您需要用相应的值替换占位符。
// init configuration
$clientID = '<YOUR_CLIENT_ID>';
$clientSecret = '<YOUR_CLIENT_SECRET>';
$redirectUri = '<REDIRECT_URI>';
下一节将实例化Google_Client对象,该对象将用于执行各种操作。 除此之外,我们还初始化了应用程序设置。
// create Client Request to access Google API
$client = new Google_Client();
$client->setClientId($clientID);
$client->setClientSecret($clientSecret);
$client->setRedirectUri($redirectUri);
接下来,我们添加了电子邮件和个人资料范围,因此在登录后,我们可以访问基本的个人资料信息。
$client->addScope("email");
$client->addScope("profile");
最后,我们有一段代码使登录流程变得神奇。
// authenticate code from Google OAuth Flow
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$client->setAccessToken($token['access_token']);
// get profile info
$google_oauth = new Google_Service_Oauth2($client);
$google_account_info = $google_oauth->userinfo->get();
$email = $google_account_info->email;
$name = $google_account_info->name;
// now you can use this profile info to create account in your website and make user logged in.
} else {
echo "<a href='".$client->createAuthUrl()."'>Google Login</a>";
}
首先,让我们看一下else
部分,该部分将在您直接访问脚本时触发。 它显示一个链接,该链接将用户带到Google进行登录。 请务必注意,我们已经使用了Google_Client
的createAuthUrl
方法来构建OAuth URL。
单击Google登录链接后,用户将被带到Google网站进行登录。 登录后,Google会通过传递code
查询字符串变量将用户重定向回我们的网站。 这就是if
块中的PHP代码将被触发的时候。 我们将使用代码交换访问令牌。
获得访问令牌后,我们就可以使用Google_Service_Oauth2
服务来获取已登录用户的个人资料信息。
因此,通过这种方式,一旦用户登录到Google帐户,您就可以访问个人资料信息。 您可以使用此信息在您的站点上创建帐户,也可以将其存储在会话中。 基本上,这取决于您如何使用此信息以及如何响应用户登录到您的站点这一事实。
有用的PHP表单脚本
今天,我们讨论了如何将Google登录信息与PHP网站集成。 如果用户不想为您的服务创建另一个帐户,则可以使用该帐户登录现有的Google帐户。
如果您有任何疑问,请在下面的评论中告诉我!
翻译自: https://code.tutsplus.com/tutorials/create-a-google-login-page-in-php--cms-33214