1. 程式人生 > >小黑小波比.nodejs網站接入QQ登入方法

小黑小波比.nodejs網站接入QQ登入方法

在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登入".成功跳轉新視窗.測試成功!