小黑小波比.nodejs網站接入QQ登入方法
阿新 • • 發佈:2019-02-05
在s910/Client/Scripts/GUI/~.js中
1.引用js sdk的javascript檔案之前
首先需要申請接入QQ登入,併成功獲取到appid和appkey。
var OpenAuth = function() {//定義這個變數函式,傳送到頁面中,例如:<script language="javascript" type="text/javascript"></script> var tag = document.createElement("script"); tag.setAttribute('language', 'javascript'); tag.setAttribute('type', 'text/javascript'); tag.setAttribute('src', 'http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js'); tag.setAttribute('data-appid', '101150264'); tag.setAttribute('data-redirecturi', 'http://127.0.0.1:8080/') document.getElementsByTagName('head')[0].appendChild(tag); // var result; // var _ok = false; // tag.onload = function() { // _ok = true; // result && result(); // }; // return function(fn){ // if(_ok)return fn(); // result = fn; // }; }; _(document).ready(function(){ OpenAuth();//呼叫函式! })
在~.js檔案中事件event中的login方法中
login: function(sender) { var loginid = app.genID(); var data = {}; data.user = auth.user; data.cid = loginid; //var k = OpenAuth(); app.tpl("Main->login", function(t) { app.gui.page(_('#main'), t(data, {})); var loginEvent = { msg: function(txt) { app.tpl("Main->login.alert", function(at, parent) { parent.html(at({ info: txt }, {})); }, loginEvent.parent); }, signin: function() { var vals = app.gui.vals(loginEvent.parent); if (!vals.user) { return loginEvent.msg("user name is not null"); } else if (!vals.pwd) { return loginEvent.msg("password name is not null"); } else { var hash = CryptoJS.HmacSHA256(vals.pwd, vals.user); var pwd = hash.toString(CryptoJS.enc.Base64); _.ajax({ type: "POST", url: "api/sign/auth/login", data: { user: vals.user, pwd: pwd, yb: auth.yb }, dataType: "json", success: function(r) { if (r.status) { return loginEvent.msg(r.status.description || r.status.code); } else if (!r.auth) { return loginEvent.msg("使用者授權失敗,請檢查你的使用者名稱或密碼!"); } else { auth.title = r.title; auth.sign = auth._sign; auth.level = r.level; auth.save(); app.gui.refresh("~"); } } }); } } };<pre name="code" class="javascript">//選擇QQid app.gui.on(_('#' + loginid), loginEvent); //k(function() { QC.Login({ btnId: loginid + "qq" //插入按鈕的節點id }); //});
在s910/Client/Views/Main/login.tpl
<span style="white-space:pre"> </span><div class="login-social-link"> <p style="float:left; margin-top:0px;" on="abc">使用其他方式登陸:</p> <a href="index.html" class="qq" id="${cid}qq"> <!--在這裡新增<a></a> 注意id--> </a> <a href="index.html" class="weibo"> <img id="weibo_img" class="img " style="display:block; margin:auto; height:50px" src="../../Context/images/weibo.jpg" /> </a> </div>
測試:
開啟登入介面,點選其它方式登入的 "qq登入".成功跳轉新視窗.測試成功!