本文講述的是如何為你的PHP項(xiàng)目實(shí)現(xiàn)Google的Oauth系統(tǒng)。這個(gè)示例PHP腳本非常快,對增加你的PHP項(xiàng)目注冊當(dāng)然是很有幫助的。

在這之前,我們已經(jīng)覆蓋了包含F(xiàn)acebook、Twitter、Google plus以及Instagram的Oauth登錄系統(tǒng)示例。很遺憾之前我遺漏掉了Google的Oauth登錄系統(tǒng)。今天我們就來看一下如何為你的web項(xiàng)目實(shí)現(xiàn)Google的Oauth系統(tǒng)。

在這之前,我們已經(jīng)覆蓋了包含F(xiàn)acebook、Twitter、Google plus以及Instagram的Oauth登錄系統(tǒng)示例。很遺憾之前我遺漏掉了Google的Oauth登錄系統(tǒng)。今天我們就來看一下如何為你的web項(xiàng)目實(shí)現(xiàn)Google的Oauth系統(tǒng)。這個(gè)示例腳本非??欤瑢υ黾幽愕膚eb項(xiàng)目注冊當(dāng)然是很有幫助的。

Google Oauth登錄系統(tǒng)開發(fā)示例

Google Oauth登錄系統(tǒng)開發(fā)示例

數(shù)據(jù)庫設(shè)計(jì)

數(shù)據(jù)庫設(shè)計(jì)很簡單,如下所示:

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,所有權(quán)認(rèn)證

驗(yàn)證您的域名所有權(quán),可以通過HTML文件上傳或包括META標(biāo)記。

所有權(quán)認(rèn)證

所有權(quán)認(rèn)證

3,OAuth Keys

谷歌將提供你OAuth用戶密鑰和OAuth秘密密鑰。

Oauth keys

Oauth keys

4, Google API控制臺(tái)

Google API控制臺(tái)創(chuàng)建客戶端ID。

Google API控制臺(tái)

Google API控制臺(tái)

Google API控制臺(tái)

Google API控制臺(tái)

然后你就可以看見你的客戶端ID和密鑰。

配置好的Google Oauth信息

配置好的Google Oauth信息

config.php

你可以在src文件夾找到這個(gè)文件,在這里您需要配置應(yīng)用程序OAuth密鑰,Consumer keys和重定向回調(diào)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登錄系統(tǒng),你只需要在index.php中加載這個(gè)文件。

<?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

在這里我們需要向之前創(chuàng)建的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

數(shù)據(jù)庫配置文件。

<?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");  
?>

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。