Discuz! F1.0(20160119) 新触屏版无法使用QQ登录问题修复

本文由Coxxs原创,转载请注明原地址:http://coxxs.me/389

更新:本问题已提交至 Discuz! F 官方,并已在新版得到官方修复。

更新了 Discuz F1.0,试了试“新”触屏版(其实就是微社区搬来的啊喂!),结果发现这搬得相当不完整,有很多功能异常及缺失。摸索了一个晚上,修复了最重要的QQ登录无法使用的问题,在此记录。

首先,要使用“触屏版”的QQ登录,需要在后台启用“微信登录”插件。

然后对以下文件进行修改:

template/default/m/js/login.js

找到(约117行)

			TOOLS.dget(DOMAIN + 'plugin.php?id=wechat&ac=logout&hash=' + login.formhash, null, function () {
				var url = DOMAIN + 'plugin.php?id=wechat:connect&op=init'
					+ '&referer=' + encodeURIComponent(location.search
						+ '&openid=' + encodeURIComponent($('#loginBox input[name=openid]')[0].value)
						+ '&openidsign=' + encodeURIComponent($('#loginBox input[name=openidsign]')[0].value)
						);
				TOOLS.openNewPage(url);
			});

替换为

var url = DOMAIN + 'plugin.php?id=wechat:connect&op=init&referer=' + encodeURIComponent(location.search);
TOOLS.openNewPage(url);

再找到(约40行)

		if (TOOLS.getQuery('loginUrl')) {
			TOOLS.dajax('GET', unescape(TOOLS.getQuery('loginUrl')), null, function (r) {
				login.loginSuccess();
			}, null, 'text/plain');
		}
		if (TOOLS.getQuery('loginErr')) {
			var loginErr = TOOLS.getQuery('loginErr');
			if (loginErr == 1001) {
				TOOLS.showTips('此QQ帐号尚未绑定,无法登录', true);
			}
		}

替换为

		if (TOOLS.getQuery('loginErr')) {
			var loginErr = TOOLS.getQuery('loginErr');
			if (loginErr == 1001) {
				TOOLS.showTips('此QQ帐号尚未绑定,无法登录', true);
			}
		} else if (TOOLS.getQuery('loginUrl')) {
				login.loginSuccess();
		}

source/plugin/wechat/connect.inc.php

找到(约15行)

$referer = 'http://wsq.discuz.qq.com/'.$_GET['referer'];

替换为

$referer = $_G['siteurl'].'m/'.$_GET['referer'];

修改好两个文件后,务必更新缓存,然后测试是否解决。

另外,需要注意的是,原微社区的QQ登录是不支持在电脑上进行的,因此新触屏版也不支持在电脑上进行QQ登录(会提示 redirect uri is illegal),需要使用手机(或手机的 useragent)进行登录。

完成以上修改后,新的触屏版就支持http下的QQ登录了。如果网站支持https,还需要对这两个文件做一些额外的修改。由于各网站配置、环境不同,这里就不再叙述方法了。

Coxxs

《Discuz! F1.0(20160119) 新触屏版无法使用QQ登录问题修复》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注