站长之家 - 站长资讯 - 易采站长站

当前位置: > 建站教程 > 源码教程 > 论坛程序 >

discuz程序QQ互联登录connect_error_code_20003错误,OAuth2.0升级方法

2015-09-08 12:36 | 来源:网络整理 | 编辑:秋军 |

bad 最新出现这个connect_error_code_20003问题,很多网站都有这个问题。主要原因是QQ登录OAuth1.0的服务变得极不稳定了。

OAuth2.0的服务,安全性,便捷性都要比1.0强。这个也是早晚的事情。但是由于discuz官方提供的方案不是对所有的网站都有效,很多站长就碰到了各种问题。

官网近期也出现了这个问题,已经尝试过很多方法,一直没成功。经过排查调试,对这个错误通过一些解决方法,供大家在解决中参考。

重要的事情放在前面:

1、开启OAuth2.0登录方式,见猴子的置顶帖。执行那个升级就可以了。

2、PHP开启curl方法和openssl。在phpinfo中可以查看到如下。

discuz程序QQ互联登录

discuz程序QQ互联登录

接下来就是特殊的事,也是问题的集中的地方:

如果你的论坛是X3.2 (X3.1应该也差不多,没分析),那么本身是支持OAuth2.0的登录的。

在确保此功能正常的情况下,下载本帖所附的附件,更新到 QQ互联插件目录(source/plugin/qqconnect),然后访问 URL。

如您不了解如何开启此功能,请联系您的服务商解决。

http://yourwebsite/plugin.php?id=qqconnect:oauth_switch 切换到 oAuth2 模式

切换完毕后删除 oauth_switch.inc.php 文件

<------->

如果你是X3 或者以下。(本身插件不支持OAuth2.0)

第一步、下载X3.2的源码,把里面的plugin里的qqconnect文件夹,去替换你网站上的,并且去后台系统插件里升级,升级后,数据库里2个表会多2个字段,具体如果升级后找不到字段问题,论坛上有解决方法的,搜一下就可以解决,不难。

第二步、在确保此功能正常的情况下,下载本帖所附的附件,更新到 QQ互联插件目录(source/plugin/qqconnect),然后访问 URL。

如您不了解如何开启此功能,请联系您的服务商解决。

http://yourwebsite/plugin.php?id=qqconnect:oauth_switch 切换到 oAuth2 模式

切换完毕后删除 oauth_switch.inc.php 文件

<---------qqconnect_oauth_switch.zip---->

第三步、把X3.2的源码里的plugin/manyou这个插件放到你的网站的对应plugin里的位置。

这个manyou是云服务的一些方法在里面。X3是在api/manyou里,所以我估计替换manyou/Server这个文件夹也是可行的。

第四步,做一些兼容的代码改动

主要是针对多出来的conuintoken这个字段做兼容。

member_connect_logging.php

25行加入以下代码:

$conuintoken = $this->connect_guest['conuintoken'];

33行:

//if ($conuin && $conopenid) {

修改为

if ($conopenid) {

member_connect_register.php

63行,增加

$conuintoken = $this->connect_guest['conuintoken'];

69左右

//if (!$conuin || !$conuinsecret || !$conopenid) {

255c // showmessage('qqconnect:connect_get_request_token_failed');

// }

改为

if(!$_G['setting']['connect']['oauth2']) {

if (!$conuin || !$conuinsecret || !$conopenid) {

showmessage('qqconnect:connect_get_request_token_failed');

}

} else {

if (!$conuintoken || !$conopenid) {

showmessage('qqconnect:connect_get_request_token_failed');

}

}

90行左右增加

'conuintoken' => $conuintoken,

class_cloud.php

43行

$file = DISCUZ_ROOT . ‘/api/manyou/' . implode('/', $items) . '.php';

改为

$file = DISCUZ_ROOT . '/source/plugin/manyou/' . implode('/', $items) . '.php';

关键一步

DX3.2中的function_filesock 替换 source/function中的 function_filesock.php

最后,对小白用户,提供一个检测脚本,解压缩后把里面的qqtest.php 放到bbs根目录,然后url中打开就可以。

如果没有出现 YOU should install and open Curl_PHP 的提示,那么你的环境是正确的。CURL和ssl都是可以用的。

<------qqtest.php.zip--------->

附:判断OAuth2.0是否启用的方法。点击qq登录后跳到的地址是下面这个,就是1.0的

http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize?oauth_consumer_key=xxxxxx&oauth_token=xxxxxx

跳到下面这个地址,就是2.0的

http://openapi.qzone.qq.com/oauth/show?which=Login&display=pc&response_type=code&client_id=xxxx&redirect_uri=http%3A%2F%2Fwww.moke8.com%2Fconnect.php%3Fmod%3Dlogin%26op%3Dcallback%26referer%3Dforum.php%253Fmod%253Dviewthread%2526tid%253D3195653%2526extra%253Dpage%25253D1%2526page%253D1&state=xxxxx&scope=get_user_info%2Cadd_share%2Cadd_t%2Cadd_pic_t%2Cget_repost_list

  • 查看discuz!论坛管理纪录
  • discuz 修改创始人密码、管理员登录密码的方法
  • Discuz! X3怎样进行内存优化提升程序性能和服务器的负载能力
  • discuz x后台设置各种用户组个性签名的长度无效
  • discuz x2修改密码注册用户获取密码放在第三方平台
  • Discuz! X3.1 判断会员登录状态及外部调用注册登录框的实现代码
  • discuzx3.1文章进行全文检索的实现方法
  • discuz批量修改论坛版块权限和用户组权限的方法
  • discuz怎么设置屏蔽论坛用户发布的站外链接
  • Discuz修改文章标题更好的SEO的方法
  • 网友评论

    关于我们 - 联系我们 - 广告服务 - 版权声明 - 人才招聘 - 友情链接 - 网站地图 - 帮助 - -

    CopyRight © 2010-2016 源码下载 easck.com , All Rights Reserved

    蒙公网安备 15052402000103号

    蒙ICP备14002389-1号