在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例。很遗憾之前我遗漏掉了Google的Oauth登录系统。今天我们就来看一下如何为你的web项目实现Google的Oauth系统。这个示例脚本非常快,对增加你的web项目注册当然是很有帮助的。
Google Oauth登录系统开发示例
在线Demo:Live Demo
数据库设计
数据库设计很简单,如下所示:- 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");
- ?>
复制代码 下面我们提供了示例源码的下载地址:
googlelogin.zip
(203.73 KB, 下载次数: 45)
原文链接:9lessons.com
本文由PHP爱好者原创翻译。
|