文档章节

第三方登录小结

李德伦
 李德伦
发布于 2014/12/18 20:52
字数 608
阅读 4311
收藏 54

说明:

       由于业务需要,所以这两天抽空看了一下第三方登录的API,从而实现了第三方的登录。

一、申请APPID

             到QQ和新浪微博的开发平台申请APPID和SECRET ,这是一个百度的apistore,第三方登录

二、QQ登录

        1. 使用js

             i. 先引入js(redirecturi是登录成功后的返回页面地址)       

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

            ii. 绑定登录按钮(只需要一个元素的id,会自动生成默认的按钮)

                 QC.Login({

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

                 });

         2.  使用OAuth(授权机制)

                 i. 使用自定义的按钮

                    <a href="javascript:qqLogin();"><img src="qq.png" /></a>

   //使用qq登录  
function qqLogin(){
      location.href = 
'https://graph.qq.com/oauth2.0/authorize?client_id='+thirdLogin.APPID_QQ+'&response_type=token&scope=get_user_info&redirect_uri='+getCurrLocation();
   }

  //获取当前页面路径--从哪个页面登录,登录成功后,返回哪个页面
  function getCurrLocation(){
      return window.location.protocol +'//'+window.location.host + window.location.pathname ;
  }

              ii. 登录成功后,获取openid和access_token 

//检查qq登录状态
   function check_qq_login_status(){
       //检查是否登录成功
        if(QC.Login.check()){
           //登录成功,获取openId
            QC.Login.getMe(function(openId,accessToken){
               var data = 'openid='+openId;
               callback(1,data);
            });
         }
   }

三、微博登录

      1. 使用js

            i. 引入js  

<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=YOUR APPKEY" type="text/javascript" charset="utf-8"></script>
   

           ii. 绑定登录按钮

//html
<div id="wb_connect_btn"></div>
//js
WB2.anyWhere(function (W) {
    W.widget.connectButton({
        id: "wb_connect_btn",
        type: '3,2',
        callback: {
            login: function (o) { //登录后的回调函数
                alert("login: " + o.screen_name)
            },
            logout: function () { //退出后的回调函数
                alert('logout');
            }
        }
    });
});

         2. 使用OAuth

               i. 自定义按钮

                <a href="javascript:wbLogin();"><img src="wb.png" /></a>

//使用微博登陆
   function wbLogin(){
      location.href = 'https://api.weibo.com/oauth2/authorize?client_id='+thirdLogin.APPID_WB+'&client_secrect='+thirdLogin.SECRET_WB+'&response_type=code&redirect_uri='+getCurrLocation();
   }

             登录成功后,会跳到redirect_uri?code=****(带有code参数,code不是与用户绑定的,不能用来标识用户)

             ii. 获取Access_Token

             使用这个接口  (CODE是上面接口返回的)  ,可以获取到access_token,这是接口需要请求方式是POST

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

             我的思路是,使用上一个接口授权成功后,在返回页面里根据code,再异步请求后台,后台调用这个接口,然后返回json数据(返回的数据里就有access_token和uid);

四、退出

    1. QQ退出

QC.Login.signOut();

    2. 微博退出

  WB2.logout(function(){location.href = redirect_url});

五、小结

       由于时间比较紧,也没有细看,但是显示是完全可以实现登录,退出的。

© 著作权归作者所有

下一篇: spring email
李德伦
粉丝 19
博文 15
码字总数 9424
作品 0
海淀
程序员
私信 提问
微信第三方授权登录返回错误信息: 40029

微信第三方登录授权后,能获取到code码,但是获取gat_token()信息就会返回这样的错误信息: Array( ) 有问题,先查下官方的文档,熟悉下授权流程: 微信第三方授权登录文档:http://blog.csd...

Corwien
2016/05/12
3.5K
0
企业环境中的账户与身份管理 之:2-非SSO也

上一篇的《企业环境中的账户与身份管理 之:1-认识》中讲到了什么是身份,什么是身份信息,身份信息有哪些,进行身份信息的统一管理,是要解决什么样的根本问题 。。 如我所猜想的那样,在回...

bisheng.hu
2011/03/01
0
0
反向工程解析QQ扫码登录的OAuth2流程

1. 引言-与OAuth2有关   OAuth 2.0协议(RFC 6749)被广泛应用于互联网应用中,最常见的可能就是第三方授权登录应用了。在许多应用网站中用户登录时,可以使用支付宝、微信、QQ的已有账号进行...

solarpig
2018/08/03
0
0
IOS集成第三方支付、分享、登录功能小结(转)

集成ShareSDK社会化分享的时候集成了微信支付或者支付宝支付功能 (分别集成了微信支付和支付宝,用Ping++集成支付的烦请绕行…) 2016.01.07 更新(修改Xcode7.2 IOS9.2 微信客户端操作之后...

天使雨儿
2016/02/25
270
0
iOS逆向与安全(一):环境搭建

前言 从本篇文章开始,笔者会整理iOS逆向相关的笔记。作为一位新人,希望通过整理笔记能够更好的理解和掌握知识。作为新人能力有限,在行文时难免出现错误欢迎批评和指正。 前期准备 一台越狱...

紫电清霜Owenli
2018/09/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 8 Optional:优雅地避免 NPE

本篇文章将详细介绍 Optional 类,以及如何用它消除代码中的 null 检查。在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的。 空指针异常(NullPointException,简称...

武培轩
22分钟前
1
0
CountDownLatch实现的并发框架

目录结构 package com.**.**.base.support.executor;import lombok.NoArgsConstructor;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;imp......

MR_TE
23分钟前
7
0
学习记录(day06-事件、按键修饰符、计算属性)

[TOC] 1.1 事件修饰符/按键修饰符 vue 通过事件修饰符对dom事件细节进行控制 <标签 @事件.修饰符="函数"></标签>.prevent ---阻止浏览器默认行为.stop ---阻止浏览器事件冒泡.e...

庭前云落
43分钟前
6
0
006-Sigle-基于blockstack去中心化博客

本篇文章主要讲解有关基于Blockstack的Sigle是一个去中心化的博客项目; 官网地址:https://www.sigle.io/ Github地址:https://github.com/pradel/sigle 页面展示: 介绍: A beautiful de...

Riverzhou
50分钟前
17
0
驰骋工作流引擎开发平台属性功能的隐藏显示介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明 工作流设计 工作流快速开发平台 业务流程管理 bpm工作流系统 java工作流主流框架 自定义...

孟娟
52分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部