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

本文由Coxxs原创,转载请注明原地址:https://dev.moe/389

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

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

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

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

template/default/m/js/login.js

找到(约117行)

[javascript]
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);
});
[/javascript]

替换为

[javascript]
var url = DOMAIN + ‘plugin.php?id=wechat:connect&op=init&referer=’ + encodeURIComponent(location.search);
TOOLS.openNewPage(url);
[/javascript]

再找到(约40行)

[javascript]
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);
}
}
[/javascript]

替换为

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

source/plugin/wechat/connect.inc.php

找到(约15行)

[php]
$referer = ‘http://wsq.discuz.qq.com/’.$_GET[‘referer’];
[/php]

替换为

[php]
$referer = $_G[‘siteurl’].’m/’.$_GET[‘referer’];
[/php]

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

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

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

Coxxs

一个有关“Discuz! F1.0(20160119) 新触屏版无法使用QQ登录问题修复”的想法

  1. 和博主经历好像….刚刚中考完。这几个月的技术增长特别特别快。一直研究的是网络前端开发和路由器。

发表回复

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