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

在s910/Client/Scripts/GUI/~.js中

查看调用JS SDK文档说明

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登录".成功跳转新窗口.测试成功!


你可能感兴趣的:(JavaScript,js,nodejs,小黑小波比)