PHP实现Google Oauth的登录系统

标签: General | 发表时间:2014-12-11 18:00 | 作者:ajaxj
出处:http://www.geek521.com

本文讲述的是如何为你的PHP项目实现Google的Oauth系统。这个示例PHP脚本非常快,对增加你的PHP项目注册当然是很有帮助的。

在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例。很遗憾之前我遗漏掉了Google的Oauth登录系统。今天我们就来看一下如何为你的web项目实现Google的Oauth系统。

在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例。很遗憾之前我遗漏掉了Google的Oauth登录系统。今天我们就来看一下如何为你的web项目实现Google的Oauth系统。这个示例脚本非常快,对增加你的web项目注册当然是很有帮助的。

Google Oauth登录系统开发示例

Google Oauth登录系统开发示例

数据库设计

数据库设计很简单,如下所示:

CREATE TABLE users  
(  
id INT PRIMARY KEY AUTO_INCREMENT,  
email VARCHAR(50) UNIQUE,  
fullname VARCHAR(100),  
firstname VARCHAR(50),  
lastname VARCHAR(50),  
google_id VARCHAR(50),  
gender VARCHAR(10),  
dob VARCHAR(15),  
profile_image TEXT,  
gpluslink TEXT

1,域名注册

这里注册或者添加你的域名。

域名注册

域名注册

2,所有权认证

验证您的域名所有权,可以通过HTML文件上传或包括META标记。

所有权认证

所有权认证

3,OAuth Keys

谷歌将提供你OAuth用户密钥和OAuth秘密密钥。

Oauth keys

Oauth keys

4, Google API控制台

Google API控制台创建客户端ID。

Google API控制台

Google API控制台

Google API控制台

Google API控制台

然后你就可以看见你的客户端ID和密钥。

配置好的Google Oauth信息

配置好的Google Oauth信息

config.php

你可以在src文件夹找到这个文件,在这里您需要配置应用程序OAuth密钥,Consumer keys和重定向回调URL。

// OAuth2 Settings, you can get these keys at https://code.google.com/apis/console Step 6 keys  
’oauth2_client_id’ => ’App Client ID’,  
’oauth2_client_secret’ => ’App Client Secret’,  
’oauth2_redirect_uri’ => ’http://yoursite.com/gplus/index.php’,  

// OAuth1 Settings Step 3  keys.  
’oauth_consumer_key’ => ’OAuth Consumer Key’,  
’oauth_consumer_secret’ => ’OAuth Consumer Secret’,

google_login.php

Google plus登录系统,你只需要在index.php中加载这个文件。

<?php  
require_once ’src/apiClient.php’;  
require_once ’src/contrib/apiOauth2Service.php’;  
session_start();  
$client = new apiClient();  
setApplicationName("Google Account Login");  
$oauth2 = new apiOauth2Service($client);  
if (isset($_GET[’code’]))  
{  
$client->authenticate();  
$_SESSION[’token’] = $client->getAccessToken();  
$redirect = ’http://’ . $_SERVER[’HTTP_HOST’] . $_SERVER[’PHP_SELF’];  
header(’Location: ’ . filter_var($redirect, FILTER_SANITIZE_URL));  
}  
if (isset($_SESSION[’token’])) {  
$client->setAccessToken($_SESSION[’token’]);  
}  
if (isset($_REQUEST[’logout’])) {  
unset($_SESSION[’token’]);  
unset($_SESSION[’google_data’]); //Google session data unset  
$client->revokeToken();  
}  
if ($client->getAccessToken())  
{  
$user = $oauth2->userinfo->get();  
$_SESSION[’google_data’]=$user; // Storing Google User Data in Session  
header("location: home.php");  
$_SESSION[’token’] = $client->getAccessToken();  
} else {  
$authUrl = $client->createAuthUrl();  
}  
if(isset($personMarkup)):  
print $personMarkup;  
endif 
if(isset($authUrl))  
{  
echo "<a class="login" href="$authUrl">Google Account Login</a>";  
} else {  
echo "<a class="logout" href="?logout">Logout</a>";  
}  
?>

home.php

在这里我们需要向之前创建的user表插入Google plus的session信息。代码如下:

<?php  
session_start();  
include(’db.php’); //Database Connection.  
if (!isset($_SESSION[’google_data’])) {  
// Redirection to application home page.  
header("location: index.php");  
}  
else 
{  
//echo print_r($userdata);  
$userdata=$_SESSION[’google_data’];  
$email =$userdata[’email’];  
$googleid =$userdata[’id’];  
$fullName =$userdata[’name’];  
$firstName=$userdata[’given_name’];  
$lastName=$userdata[’family_name’];  
$gplusURL=$userdata[’link’];  
$avatar=$userdata[’picture’];  
$gender=$userdata[’gender’];  
$dob=$userdata[’birthday’];  
//Execture query  
$sql=mysql_query("insert into users(email,fullname,firstname,lastname,google_id,gender,dob,profile_image,gpluslink) values(’$email’,’$fullName’,’$firstName’,’$lastName’,’$googleid’,’$gender’,’$dob’,’$avatar’,’$gplusURL’)");  
?>

db.php

数据库配置文件。

<?php  
$mysql_hostname = "localhost";  
$mysql_user = "username";  
$mysql_password = "password";  
$mysql_database = "databasename";  
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");  
mysql_select_db($mysql_database, $bd) or die("Could not select database");  
?>

相关 [php google oauth] 推荐:

PHP实现Google Oauth的登录系统

- - 极客521 | 极客521
本文讲述的是如何为你的PHP项目实现Google的Oauth系统. 这个示例PHP脚本非常快,对增加你的PHP项目注册当然是很有帮助的. 在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例. 很遗憾之前我遗漏掉了Google的Oauth登录系统.

tsung: 好文: PHP performance tips - Google Webmaster

- 小汐 - Planet DebianTW
Google 提供的 PHP 效能調校(Optimize performance)的幾點原則, 詳細可見此文:. 原文: Let's make the web faster - PHP performance tips. 作者: Eric Higgins, Google Webmaster. 此文內容很短, 講得都是大方向, 主題內容如下:.

OAuth的改变

- lyxint - 火丁笔记
去年我写过一篇《OAuth那些事儿》,对OAuth做了一些简单扼要的介绍,今天我打算写一些细节,以阐明OAuth如何从1.0改变成1.0a,继而改变成2.0的. 在OAuth诞生前,Web安全方面的标准协议只有OpenID,不过它关注的是验证,即WHO的问题,而不是授权,即WHAT的问题. 好在FlickrAuth和GoogleAuthSub等私有协议在授权方面做了不少有益的尝试,从而为OAuth的诞生奠定了基础.

理解OAuth 2.0

- - 阮一峰的网络日志
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为 RFC 6749. 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来.

oauth 认证心得

- 非狐外传 - python.cn(jobs, news)
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准. 简易来说,就是我们可以在某一个第三方服务器,如:新浪,豆瓣,在用户授权,并且不透漏密码等信息给我们的条件下,访问和修改用户的资源. oauth的项目主页为:http://oauth.net/ ,现在国内很多网站的开放平台都采用了Oauth方式来进行授权.

OAuth学习笔记

- 宋大妈 - FeedzShare
来自: 标点符 - FeedzShare  . 发布时间:2011年08月29日,  已有 2 人推荐. OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.

OAuth 2.0 工作流程

- - 企业架构 - ITeye博客
原文链接:http://www-01.ibm.com/support/knowledgecenter/SSELE6_8.0.0.3/com.ibm.ammob.doc_8.0.0.3/config/concept/con_oauth20_workflow.html%23con_oauth20_workflow?lang=zh.

GitHub - casinthecloud/cas-pac4j-oauth-demo: Demo webapps to test CAS/OAuth/OpenID/SAML client support and OAuth server support in CAS version >= 4.0.0

- -

基于PECL OAuth打造微博应用

- lostsnow - 火丁笔记
最近,国内主要门户网站相继开放了微博平台,对开发者而言这无疑是个利好消息,不过在实际使用中却发现平台质量良莠不齐,有很多不完善的地方,就拿PHP版SDK来说吧,多半都是用TwitterOAuth改的,一旦多平台集成,很容易出现命名冲突之类的问题. 既然官方SDK不给力,那我们只能发扬自力更生的革命精神了.