PHP實現Google Oauth的登入系統
本文講述的是如何為你的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登入系統開發示例
資料庫設計
資料庫設計很簡單,如下所示:
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
4, Google API控制檯
在Google API控制檯建立客戶端ID。
Google API控制檯
Google API控制檯
然後你就可以看見你的客戶端ID和金鑰。
配置好的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"); ?>
相關文章
- oauth 實現手機號碼登入OAuth
- Casdoor + OAuth 實現單點登入 SSOOAuth
- OAuth2實現單點登入SSOOAuth
- Spring Cloud Security:Oauth2實現單點登入SpringCloudOAuth
- 跨域分散式系統單點登入的實現(CAS單點登入)跨域分散式
- Spring Security Oauth2.0 實現簡訊驗證碼登入SpringOAuth
- 不同團隊如何實現登入系統 (just for fun)
- oauth2.0實現sso單點登入的方式和相關程式碼OAuth
- PHP如何實現登入認證和鑑權PHP
- PHP外掛系統的實現(一)PHP
- 短影片商城系統,session和cookie實現登入SessionCookie
- SpringCloud微服務實戰——搭建企業級開發框架(四十):使用Spring Security OAuth2實現單點登入(SSO)系統SpringGCCloud微服務框架OAuth
- OAuth2.0協議入門(三):OAuth2.0授權與單點登入(SSO)的區別以及單點登入服務端從設計到實現OAuth協議服務端
- 如何自己實現一個健壯的 SSO 單點登入系統
- 直播系統程式碼,登入時常用驗證方式實現
- 【SpringSecurity OAuth2 JWT】實現SSO單點登入 第一篇SpringGseOAuthJWT
- PHP外掛系統的實現(三):實現探測器PHP
- JS+PHP實現登入後自動執行之前的操作JSPHP
- 爬蟲模擬登入—OAUTH的詳解爬蟲OAuth
- Spring Boot + Security + JWT 實現Token驗證+多Provider——登入系統Spring BootJWTIDE
- 基於mtcnn/facenet/tensorflow實現人臉識別登入系統CNN
- [譯] 學習 Spring Security(八):使用 Spring Security OAuth2 實現單點登入SpringOAuth
- PHP外掛系統的實現(四):實現註冊動作PHP
- 如何使用PHP進行OAuth2授權流程的實現PHPOAuth
- [API 寫法] QQ 登入、微信登入、Facebook、google、蘋果登入APIGo蘋果
- sau交流學習社群第三方登陸github--oauth來實現使用者登入GithubOAuth
- React & Redux 實現註冊登入認證系統(31 個視訊)ReactRedux
- 直播系統原始碼,自動登入及記住密碼實現原始碼密碼
- Spring Security OAuth2 單點登入SpringOAuth
- laravel 實現多使用者體系登入Laravel
- 網站登入JWT的實現網站JWT
- PHP外掛系統的實現(七):外掛案例PHP
- JAVA 多使用者商城系統b2b2c-SSO單點登入之OAuth2.0登入認證(1)JavaOAuth
- 系統多種使用者角色認證登入授權如何實現?
- 直播系統app原始碼,Android studio 實現app登入註冊頁面APP原始碼Android
- 單點登入系統原理與實現,圖文並茂,附原始碼原始碼
- OAuth2.0協議入門(一):OAuth2.0協議的基本概念以及使用授權碼模式(authorization code)實現百度賬號登入OAuth協議模式
- django 中 Oauth2 實現第三方登陸DjangoOAuth