zoukankan      html  css  js  c++  java
  • qq登录,新浪微博登录 ,接口开发

    给linux命令在线中文手册加了,qq登录和新浪微博登录,认证用的是auth2.0,并且用了js api和php api相结合的方式来做的。个人觉得这种方式,兼顾安全和人性化。以前写过一篇关于申请的博客,请参考:qq登录,新浪微博登录接口申请过程中遇到的问题

    1,js api的优点,就是弹窗登录,不要跳来跳去,烦的很,数据都是后获取的,可以通过浏览器的开发者工具,看到返回的数据,这样保存api返回的数据就不安全了,在浏览器上可以直接写代码,模拟提交

    2,php api的缺点,页面跳转,个人感觉跳来跳去,非常让人不爽。但是在保存数据时,要安全的多,并且随时可以到第三方进行数据审核。

    如果二者结合起来,不用跳来跳去,数据也可以得到校验。

    一,qq登录

    qq登录,JS API登录,并获取个人数据,异步提交给php程序,php程序,对提交来的数据,进行第三方校验,也就是说,根据传来的参数,在请求一次php的api,来获取信息,入本地数据库。qq的open id是qq的唯一标识,主要代码如下。

    1,js代码

    1. <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="你的appid"  charset="utf-8"></script>  
    1. function qq_login(){  
    2.    QC.Login({  
    3.        btnId:"qqlogin",  
    4.        scope:"all",  
    5.        size: "A_M"  
    6.    }, function(reqData, opts){  
    7.         if(QC.Login.check()){  
    8.             QC.Login.getMe(function(openId, accessToken){  
    9.                 if(openId){  
    10.                     $.ajax({  
    11.                         type:"POST",  
    12.                         url:"./?mod=ajax&app=ajax_login&act=qq",  
    13.                         async:false,  
    14.                         data:{'openid':openId,'access':accessToken,'login':'only'},  
    15.                         success: function(msg){  
    16.                              if(msg == 'yes'){  
    17.                                 这里是你的操作  
    18.                              }  
    19.                         }  
    20.                      });  
    21.                 }  
    22.             });  
    23.         }  
    24.    });  
    25. }  

    2,php代码

    1. require_once("路径/qqConnectAPI.php");   //顶部包含这个文件  
    2.   
    3. public function qqAction(){  
    4.   
    5.     if(emptyempty($_POST['openid']) || emptyempty($_POST['access'])){  
    6.         echo "no";  
    7.         exit;  
    8.     }  
    9.   
    10.     $this->open_id = $_POST['openid'];  
    11.     $this->access = $_POST['access'];  
    12.   
    13.     $qc = new QC($this->access,$this->open_id);     //对数据进行校验  
    14.     $arr = $qc->get_user_info();  
    15.   
    16.     $result = $this->save_qq($arr);      //保存数据  
    17.     if(!emptyempty($result){  
    18.         echo "yes";  
    19.         exit;  
    20.     }else{  
    21.         echo "no";  
    22.         exit;  
    23.     }  

    二,新浪微博登录

    js api登录过程,获取到登录数据,并且存储到cookie中,异步提交时,不用传参数到,php程序。php api有方法读取登录的access token,并获取唯一标识,user id

    在这里再吐槽一下,新浪的接口,还是不错的,可就是尼玛,文档乱的一踏糊涂,找个东西,那叫痛苦。

    1,js 代码

    1. <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=应用的app id" type="text/javascript" charset="utf-8"></script>  

    新浪微博的app key,app secret有多个,一个是网站的app key,app secret,网站下,每个创建应用都有一个app key,app secret。

    1. function weibo_login (){  
    2.       WB2.anyWhere(function(W){  
    3.         W.widget.connectButton({  
    4.             id: "weibologin",  
    5.             type:'3,2',  
    6.             callback : {  
    7.                 login:function(o){    //登录后的回调函数  
    8.                     $.ajax({  
    9.                         type:"POST",  
    10.                         url:"./?mod=ajax&app=ajax_login&act=weibo",  
    11.                         async:false,  
    12.                         data:{'login':'only'},  
    13.                         success: function(msg){  
    14.                              if(msg == 'yes'){  
    15.                                 你的操作  
    16.                              }  
    17.                         }  
    18.                      });  
    19.                 }  
    20.             }  
    21.         });  
    22.     });  
    23. }  

    2,php代码

    1. include_once('路径/config.php');  
    2. include_once('路径/saetv2.ex.class.php');  
    3.   
    4. public function weiboAction(){  
    5.   
    6.     $o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );  
    7.     $access = $o->getTokenFromJSSDK();       //从cookie中获取数据  
    8.   
    9.     $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $access['access_token'] );  
    10.     $user_message = $c->show_user_by_id( $access['uid']);  
    11.   
    12.     $result = $this->save_sina($user_message);      //保存数据  
    13.     if(!emptyempty($result){  
    14.         echo "yes";  
    15.         exit;  
    16.     }else{  
    17.         echo "no";  
    18.         exit;  
    19.     }  
    20. }  

    三,小结

    qq登录和微博登录的接口都还是不错的,qq登录在实用性,灵活性,安全性上,比微博就好一点。特别是文档方面,qq登录比微博登录好的太多。新浪微博团队能不能改进一下呢。这就好比,有了家电,没有说明书是一样的。

  • 相关阅读:
    架构师的职责
    open-falcon的插件机制
    gitlab安装
    python把日期转换为秒数;日期转为字符串;datetime、date
    js获取table的值,js获取td里input的值
    grafana结合influxdb、open-falcon出图配置
    centos安装python的虚拟环境和虚拟管理环境
    centos的python2.6.x升级到python2.7.x方法;python2.6.x的版本就不要用了
    openfalcon的安装和使用
    influxdb的python操作
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061453.html
Copyright © 2011-2022 走看看