给linux命令在线中文手册加了,qq登陆和新浪微博登陆,认证用的是auth2.0,而且用了js api和php api相结合的方式来作的。我的以为这种方式,兼顾安全和人性化。之前写过一篇关于申请的博客,请参考:qq登陆,新浪微博登陆接口申请过程当中遇到的问题javascript
1,js api的优势,就是弹窗登陆,不要跳来跳去,烦的很,数据都是后获取的,能够经过浏览器的开发者工具,看到返回的数据,这样保存api返回的数据就不安全了,在浏览器上能够直接写代码,模拟提交php
2,php api的缺点,页面跳转,我的感受跳来跳去,很是让人不爽。可是在保存数据时,要安全的多,而且随时能够到第三方进行数据审核。html
若是两者结合起来,不用跳来跳去,数据也能够获得校验。java
一,qq登陆linux
qq登陆,JS API登陆,并获取我的数据,异步提交给php程序,php程序,对提交来的数据,进行第三方校验,也就是说,根据传来的参数,在请求一次php的api,来获取信息,入本地数据库。qq的open id是qq的惟一标识,主要代码以下。ajax
1,js代码数据库
- <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="你的appid" charset="utf-8"></script>
- function qq_login(){
- QC.Login({
- btnId:"qqlogin",
- scope:"all",
- size: "A_M"
- }, function(reqData, opts){
- if(QC.Login.check()){
- QC.Login.getMe(function(openId, accessToken){
- if(openId){
- $.ajax({
- type:"POST",
- url:"./?mod=ajax&app=ajax_login&act=qq",
- async:false,
- data:{'openid':openId,'access':accessToken,'login':'only'},
- success: function(msg){
- if(msg == 'yes'){
- 这里是你的操做
- }
- }
- });
- }
- });
- }
- });
- }
2,php代码api
- require_once("路径/qqConnectAPI.php");
-
- public function qqAction(){
-
- if(emptyempty($_POST['openid']) || emptyempty($_POST['access'])){
- echo "no";
- exit;
- }
-
- $this->open_id = $_POST['openid'];
- $this->access = $_POST['access'];
-
- $qc = new QC($this->access,$this->open_id);
- $arr = $qc->get_user_info();
-
- $result = $this->save_qq($arr);
- if(!emptyempty($result){
- echo "yes";
- exit;
- }else{
- echo "no";
- exit;
- }
二,新浪微博登陆浏览器
js api登陆过程,获取到登陆数据,而且存储到cookie中,异步提交时,不用传参数到,php程序。php api有方法读取登陆的access token,并获取惟一标识,user id安全
在这里再吐槽一下,新浪的接口,仍是不错的,可就是尼玛,文档乱的一踏糊涂,找个东西,那叫痛苦。
1,js 代码
- <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。
- function weibo_login (){
- WB2.anyWhere(function(W){
- W.widget.connectButton({
- id: "weibologin",
- type:'3,2',
- callback : {
- login:function(o){
- $.ajax({
- type:"POST",
- url:"./?mod=ajax&app=ajax_login&act=weibo",
- async:false,
- data:{'login':'only'},
- success: function(msg){
- if(msg == 'yes'){
- 你的操做
- }
- }
- });
- }
- }
- });
- });
- }
2,php代码
- include_once('路径/config.php');
- include_once('路径/saetv2.ex.class.php');
-
- public function weiboAction(){
-
- $o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );
- $access = $o->getTokenFromJSSDK();
-
- $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $access['access_token'] );
- $user_message = $c->show_user_by_id( $access['uid']);
-
- $result = $this->save_sina($user_message);
- if(!emptyempty($result){
- echo "yes";
- exit;
- }else{
- echo "no";
- exit;
- }
- }
三,小结
qq登陆和微博登陆的接口都仍是不错的,qq登陆在实用性,灵活性,安全性上,比微博就好一点。特别是文档方面,qq登陆比微博登陆好的太多。新浪微博团队能不能改进一下呢。这就比如,有了家电,没有说明书是同样的。