本站公告: 用户中心正式上线,欢迎体验。

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

运气淘 admin 136浏览 0评论

最新出现这个connect_error_code_20003问题,很多网站都有这个问题,连admin5的论坛也有这个问题。主要原因是QQ登录OAuth1.0的服务变得极不稳定了。
OAuth2.0的服务,安全性,便捷性都要比1.0强。这个也是早晚的事情。但是由于discuz官方提供的方案不是对所有的网站都有效,很多站长就碰到了各种问题。
魔客吧官网近期也出现了这个问题,已经尝试过很多方法,一直没成功。经过排查调试,对这个错误通过一些解决方法,供大家在解决中参考。
重要的事情放在前面:
1、开启OAuth2.0登录方式,见猴子的置顶帖。执行那个升级就可以了。
2、PHP开启curl方法和openssl。在phpinfo中可以查看到如下。

接下来就是特殊的事,也是问题的集中的地方:
如果你的论坛是X3.2 (X3.1应该也差不多,没分析),那么本身是支持OAuth2.0的登录的。
在确保此功能正常的情况下,下载本帖所附的附件,更新到 QQ互联插件目录(source/plugin/qqconnect),然后访问 URL。
如您不了解如何开启此功能,请联系您的服务商解决。

把这个文件解压上传到ftp (qqconnect_oauth_switch.zip) 传到这个目录source/plugin/qqconnect/

http://这里是你的网址/plugin.php?id=qqconnect:oauth_switch 切换到 oAuth2 模式
切换完毕后删除 oauth_switch.inc.php 文件



出现

discuzX3.2错误(1054) Unknown column 'conuintoken' in 'field list'

解决方法在数据库运行下以下代码

ALTER TABLE  `pre_common_member_connect` ADD COLUMN conuintoken char(32) NOT NULL DEFAULT '';
ALTER TABLE  `pre_common_connect_guest` ADD COLUMN conuintoken char(32) NOT NULL DEFAULT '';


然后就可以正常登录了,,但是应用插件里还是无法开通,,不管了,目的达到了,,QQ能登录了。



 这是我的网站,可以看下 谯城区论坛



我是只做了上面的步骤,下面的没做。我用的wdcp v3



第三步、把X3.2的源码里的plugin/manyou这个插件放到你的网站的对应plugin里的位置。
这个manyou是云服务的一些方法在里面。X3是在api/manyou里,所以我估计替换manyou/Server这个文件夹也是可行的。

第四步,做一些兼容的代码改动
主要是针对多出来的conuintoken这个字段做兼容。

  1. member_connect_logging.php 

  2. 25行加入以下代码:

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


  4. 33行:


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

  6. 修改为

  7. if ($conopenid) {



  8. member_connect_register.php


  9. 63行,增加

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


  11. 69左右

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

  13.         //        showmessage('qqconnect:connect_get_request_token_failed');

  14. //        }


  15. 改为


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

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

  18.                         showmessage('qqconnect:connect_get_request_token_failed');

  19.                 }

  20.         } else {

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

  22.                         showmessage('qqconnect:connect_get_request_token_failed');

  23.                 }

  24.         }



  25. 90行左右增加

  26. 'conuintoken' => $conuintoken,




  1. class_cloud.php

  2. 43行

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


  4. 改为

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


  6. 关键一步

  7. 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的

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

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

  1. 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程序QQ互联登录connect_error_code_20003错误,OAuth2.0升级方法

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • 验证码 (必填)点击刷新验证码