第三方登录SDK

澳门新葡亰娱乐在线 13

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

          紧接着上次的第三方登录文档,这一波又来了。

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

       一、使用qq登录

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

           
首次登录的话会跳转到应用开发者注册,自己测试的话选择个人。下面的各项自己按真实情况填写。

澳门新葡亰娱乐在线 1

             澳门新葡亰娱乐在线 2

Google Oauth登录系统开发示例

       
注册后添加应用,网址一定要是外网能访问的你的网站,不能随便填写的。点击验证会出现一部分代码,将代码复制粘贴在你网站首页或者一级目录下HTML代码的head标签中。完成代码粘贴   
  后点击弹出成的开始验证。验证成功会提示网站验证成功,下一步创建应用。

数据库设计

       
创建成功后自动跳转到应用,页面上会显示上一个博文中的APPID和APPKEY了。          

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

       
配置本地的项目的域名,将域名指向127.0.0.1;没有虚拟机的可以使用localhost来配置,在自己的域名所指位置或者localhost创建一个接收返回值的php文件,如:code.php。在其中           接收$_GET[“code”]。并将其也配置在你添加的应用回调地址中(

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

           QQ互联每修改一次配置都有验证一下网址才可以保存。

1,域名注册

      二、引入官方SDK

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

            从开放平台的文档资料下载SDK

澳门新葡亰娱乐在线 3

         澳门新葡亰娱乐在线 4

域名注册

            澳门新葡亰娱乐在线 5

2,所有权认证

 

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

                找个合适的版本,因为我做的是PHP,就下载PHP的,做java的小伙伴可以下载java的对应类型。

澳门新葡亰娱乐在线 6

                下载解压后会有一个connect2.1的文件夹,放在项目的根目录,API文件夹中放置了配置文件和接入类,开发中主要用的就是这个文件夹,doc文件夹是开发帮助文档,example中是一

所有权认证

     些功能示例。Install文件夹是帮助配置的一个文件。

3,OAuth Keys

澳门新葡亰娱乐在线 7澳门新葡亰娱乐在线 8

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

              访问connect2.1文件夹,会显示下图的样子,按照提示填写配置,请求授权不建议选择太多,按照自己的需求选择就可以,因为选择的授权都会在用户登录的OAuth页面显示给用户的,

澳门新葡亰娱乐在线 9

   
 给用户不安全感。配置之后除了API文件夹其他都可以删掉啦。

Oauth keys

              澳门新葡亰娱乐在线 10

4, Google API控制台

             如果没有看上一篇博文的话要提前看一下,方便理解啊。

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

             QQ互联  Server_side  和 Client_side分别指的服务端语言和客户端语言分别是怎么接入的,php语言是服务端语言,所以使用

澳门新葡亰娱乐在线 11

    的是Server_side。

Google API控制台

      三、SDK核心类和重要方法 

澳门新葡亰娱乐在线 12

登录授权相关的三个主要类(Connect2.1/class/*.class.php)

澳门新葡亰娱乐在线,Google API控制台

  (1)、Recorder.class.php[配置读写与SESSION存取]

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

        __construct方法中:

澳门新葡亰娱乐在线 13

          $incFileContents = file(ROOT.”comm/inc.php”);//读取配置文件json串inc.php是自动             生成的一个文件,里面包含有appid,appkey,callback等

配置好的Google Oauth信息

          $incFileContents = $incFileContents[1];

config.php

          $this->inc = json_decode($incFileContents);//解析成PHP对象

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

        readInc($name)方法中:

// 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',

          return $this->inc->$name;//->readInc(“appid”)即读取配置文件的appid

google_login.php

 

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

 (2)、URL.classphp[基于CURL库的get与post请求]

<?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>";  
}  
?>
  public function combineURL($baseURL,$keysArr){

        $combined = $baseURL."?";//拼接?

        $valueArr = array();

        foreach($keysArr as $key => $val){

            $valueArr[] = "$key=$val";//拼接参数
        }

        $keyStr = implode("&",$valueArr);//使用&拼接参数键值对

        $combined .= ($keyStr);

        return $combined;

    }

home.php

            (3)、Oauth.class.php[Oauth相关URL动态拼接与token操作]

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

public function qq_login(){//拼接qq登录页面URL
        $appid = $this->recorder->readInc("appid");//读取appid
        $callback = $this->recorder->readInc("callback");//读取回调地址
        $scope = $this->recorder->readInc("scope");//读取授权列表

        //-------生成唯一随机串防CSRF攻击
        $state = md5(uniqid(rand(), TRUE));//原样返回参数
        $this->recorder->write('state',$state);//state写入session中

        //-------构造请求参数列表
        $keysArr = array(
            "response_type" => "code",
            "client_id" => $appid,
            "redirect_uri" => $callback,
            "state" => $state,
            "scope" => $scope
        );

        $login_url =  $this->urlUtils->combineURL(self::GET_AUTH_CODE_URL, $keysArr);

        header("Location:$login_url");
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图