JS+PHP实现QQ,新浪微博和豆瓣互联登陆

QQ联合登陆:

1.        注册QQ互联开发者并注册项目

这里主要要注意注册项目时的网站地址和回调地址。网站地址不支持三级目录,如“www.abc.com/abc/test”是不支持的,最多只能到“www.abc.com/abc”这一级。回调地址为当用户授权登录后的跳转地址,一般根据项目情况自己控制。填写完成后会有验证操作,按照网址要求在header中添加代码即可,注意生成的验证码有所绑定,不要copy错了。注册项目成功后会生成APP ID 和APP KEY,这两个值是与QQ互联交互的标识。

2.        选择合适的QQ登录logo,放在网站登录的合适地方,此处用户可以自己选择,但需要给该logo绑定ID,代码如下:

<div id="qqLoginBtn"><imgsrc='Public/images/QQconnect.png'></div>

3.        引入QQ集成好的JS SDK包,可以直接实现QQ登录,代码如下:

<script type="text/javascript"src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"data-appid="101069286"data-redirecturi="http://stone2gold.cn/testLogin"charset="utf-8"></script>

注意此处的data-appid就是注册项目成功后获得的APP ID,data-redirecturi即回调地址。

具体使用说明见http://wiki.connect.qq.com/js_sdk使用说明

4.        给该ID绑定click事件,代码如下:

<script type="text/javascript">

QC.Login({

    btnId:"qqLoginBtn"    //插入按钮的节点id

  });

 var paras= {};

5.       调用JS SDK 的OpenAPI,可以获取用户信息,具体获取字段可以参考互联登陆SDK说明

QC.api("get_user_info",paras)

  //指定接口访问成功的接收函数,s为成功返回Response对象

  .success(function(s){

     //成功回调,通过s.data获取OpenAPI的返回数据,可以在这里添加自定义动作

     alert("获取用户信息成功!当前用户昵称为:"+s.data.nickname);

  })

  //指定接口访问失败的接收函数,f为失败返回Response对象

  .error(function(f){

     //失败回调

     alert("获取用户信息失败!");

  })

  //指定接口完成请求后的接收函数,c为完成请求返回Response对象

  .complete(function(c){

     //完成请求回调

     alert("获取用户信息完成!");

  });

</ script >

新浪联合登陆:

与QQ第三方登录类似,流程都是采用Oauth方式,也有集成开发包,主要是微博的项目认证必须要求一级域名,即必须在www.abc.com的地址进行互联,不允许再有子目录,首先也是注册认证,然后绑定相应的图标,最后为该图标绑定登陆事件及登陆后操作,具体代码如下

$("#wb_connect_btn").live("click",function(){
WB2_Login();
});


function WB2_Login(){

   WB2.login(function(){
       /***授权成功后回调***/
       getWbUserData(function(o){
           /***o是/users/show.json接口返回的json对象***/
        var paras={};
paras.openid=o.idstr;
// paras.accesstoken=accessToken;
paras.nickName=o.screen_name;
paras.userPic=o.profile_image_url;
Connectlogin(paras,CONSTANT.CONNECTLOGIN.WEIBOLOGIN);
       });
   });
}


function getWbUserData(callback) {
   WB2.anyWhere(function (W) {
       /***获取授权用户id***/
       W.parseCMD("/account/get_uid.json", function (sResult, bStatus) {
           if (!!bStatus) {
       /**请求uid成功后调用以获取用户数据**/
               getData(W, sResult);
           }else{
           /*** 这里只是简单处理出错***/ 
               ui.failed("授权失败或错误");
           }
       }, {}, {
           method: 'GET'
       });
   });
   /***请求用户数据,并执行回调***/
   function getData(W, User) {
       W.parseCMD("/users/show.json", function (sResult, bStatus) {
        if (!!bStatus && !!callback) {
               callback.call(this,sResult);
           }
       },
       {
           'uid': User.uid
       },
       {
           method: 'GET'
       });
   }
};

豆瓣联合登陆:

不得不说,豆瓣的互联开发做的真的不太好啊。。。没有集成好的SDK,同时说明文档也不完善。

当然,首先你还是要去豆瓣开发者注册一个账号啊,通过验证才可以发送请求啊。做的过程也比较纠结,这里没有使用JS请求,而是直接使用PHP发送Http请求,代码如下:

private function httpRequest($url, $postfields='', $method='GET', $headers=array()){
$ci=curl_init();   //初始化curl请求
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ci, CURLOPT_TIMEOUT, 30);    //参数设置 
if($method=='POST'){
curl_setopt($ci, CURLOPT_POST, TRUE);
if($postfields!='')curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}
$headers[]="User-Agent: doubanPHP(piscdong.com)";   //封装head头
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ci, CURLOPT_URL, $url);          
$response=curl_exec($ci); //执行curl请求
curl_close($ci);
$json_r=array();
if($response!='')$json_r=json_decode($response, true); 
return $json_r;
}

到此,三种联合登陆的过程都解释完了,希望能给大家帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值