在PHP中创建Google登录页面
在本文中,我将解释如何在您的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
在PHP中创建Google登录页面相关推荐
- android如何新建登录界面,在android中创建一个登录页面
尝试这个 public class Login extends Activity { /** Called when the activity is first created. */ private ...
- 使用Xamarin.Android中的Google登录OAuth 2.0对用户进行身份验证
什么是用户认证? (What is User Authentication?) There is a user base associated with every app that is avail ...
- 如何在React Native和Firebase中设置Google登录
Google sign-in is a great login feature to offer to your app's users. It makes it easier for them to ...
- 在Android App中集成Google登录
技术文章 来源:码农网 发布:2016-09-19 浏览:194 摘要:今天,几乎所有的web和移动app都自带谷歌和Facebook登录,这对app开发者和用户来说是一个非常有用的功能,因为几乎每个 ...
- 微信小程序怎么新建php文件,微信小程序中创建小程序页面的步骤介绍(图文)...
本篇文章给大家带来的内容是关于微信小程序之创建小程序页面的步骤介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 创建一个简单的页面,创建小程序页面的具体几个步骤: 1. 在page ...
- 如何在 SAP 电商云 Spartacus UI 中创建新的页面
Spartacus 中的页面基于使用相关 API 从 SAP Commerce 后端获取的 CMS 页面.来自 SAP Commerce 端的数据定义了元数据,如 url.标题等,以及页面的结构.结构 ...
- php 判断用户是否刷新,如何在php和ajax中创建一个注册页面,它会在不刷新页面的情况下检查某个用户名是否已经存在? - php...
我有一个register.php文件,它为我的网站创建了新用户.但是,如果某人使用已经存在的用户名,则仅当他输入整个表单并提交时才会生成错误.如何实现Ajax / Jquery以在不提交表单的情况下显 ...
- 界面编程---用Java创建QQ登录页面
界面编程: 图形用户界面GUI由文本框,滑块和滚动条等小部件组成,当今的计算机用户都希望其使用的软件有这样的界面.Java类库包含一组被称为Swing的包,使用户提供GUI,并接收来自键盘鼠标和其他输 ...
- java web 使用https_如何在Web应用程序中实现HTTPS登录页面?
小编典典 首先,您需要为服务器启用SSL.对于Tomcat,您需要生成一个openSSL密钥库,并将以下连接器添加到server.xml: keystoreFile="mykeystore& ...
最新文章
- Linux下分区、格式化、自动挂载
- NGLView 安装与配置-交互式分子结构和轨迹查看
- SAP PM维护计划
- linux 进程装入 物理内存 页表,linux进程空间一步步探究.doc
- 【BZOJ】2190 [SDOI2008]仪仗队
- oracle cusor 定义
- c语言使用未初始化的内存怎么解决_C语言快速入门——数组与调试进阶
- .NET Core实战项目之CMS 第十七章 CMS网站系统的部署
- cls_template.php on line 1072,博客 – 联发多彩网页技术博客
- MySQL修改主键初始值为1
- 【阅读】《点石成金:访客至上的网页设计秘籍》读书笔记
- java将数据写入csv文件,从csv文件中读取数据
- BigData | 一文带你搞清楚“数据倾斜”
- 定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)
- WPS 解决插入尾注后无法添加分节页符
- java p2p技术内幕.pdf_JavaP2P技术内幕
- ICLR2020论文阅读笔记reformer: THE EFFICIENT TRANSFORMER
- 1741: 通讯录编排
- python连接到SQList数据库以及简单操作
- ts16949 软件开发流程图_TS16949 标准流程之汽车零部件项目开发流程