第三方登入小結

來源:互聯網
上載者:User

標籤:style   blog   http   ar   io   os   使用   sp   java   

說明:

       由於業務需要,所以這兩天抽空看了一下第三方登入的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>//jsWB2.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()這個方法,不一定能真正退出(因為它是非同步執行的,你可以試一下)。

       我的解決方案時,根據登入狀態判斷是否退出,沒退出繼續執行

timeId = setInterval("wb_logout()",50);  //使用定時器 //退出微博   function wb_logout(){        if(WB2.checkLogin()){            WB2.logout();        }else{            clearInterval(timeId);            location.href = getCurrLocation();  //退出後,重新整理頁面(為了改變使用者資訊顯示狀態)        }   }

五、小結

       由於時間比較緊,也沒有細看,但是顯示是完全可以實現登入,退出的。

第三方登入小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.