设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 699|回复: 0

discuz论坛QQ互联登陆账号 提示详细错误:connect_error_code_0 排查 解决方法

[复制链接]
 成长值: 26510

签到天数: 3349 天

[LV.Master]伴坛终老

发表于 2019/5/9 14:00 | 显示全部楼层 |阅读模式 |Google Chrome 74.0.3729.131|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
问题:点击QQ互联登录按钮,提示下面的错误信息。
抱歉,当前存在网络问题或服务器繁忙,详细错误:connect_error_code_0,错误代码:,请您稍候再试。

分析,discuz的QQ互联集成了OAuth1.0和OAuth2.0的接口,升级脚本判断如果服务器支持ssl,就会使用OAuth2.0接口
出现此问题的站点属于切换到了OAuth2.0接口后导致的。

source\plugin\manyou\Service\Client\OAuth.php
  1.         public function dfsockopen($requestURL, $queryString = array(), $files = false) {
  2.                 return dfsockopen($requestURL, 0, $queryString, '', false, $this->_apiIp, 15, TRUE, !$files ? 'URLENCODE' : 'FORMDATA', true, 0, $files);
  3.         }
复制代码


注意这里请求url的使用,使用了$this->_apiIp参数,看下这个参数是在哪里定义的。
source\plugin\manyou\Service\Client\ConnectOAuth.php
  1.         public function __construct($connectAppId = '', $connectAppKey = '', $apiIp = '') {

  2.                 if(!$connectAppId || !$connectAppKey) {
  3.                         global $_G;
  4.                         $connectAppId = $_G['setting']['connectappid'];
  5.                         $connectAppKey = $_G['setting']['connectappkey'];
  6.                 }
  7.                 $this->setAppkey($connectAppId, $connectAppKey);
  8.                 if(!$this->_appKey || !$this->_appSecret) {
  9.                         throw new Exception('connectAppId/connectAppKey Invalid', __LINE__);
  10.                 }

  11.                 if(!$apiIp) {
  12.                         global $_G;
  13.                         $apiIp = $_G['setting']['connect_api_ip'] ? $_G['setting']['connect_api_ip'] : '';
  14.                 }

  15.                 if($apiIp) {
  16.                         $this->setApiIp($apiIp);
  17.                 }
  18.         }
复制代码


这里可以看到使用的是后台设置的互联接口IP。

Discuz! 后台诊断工具里的互联接口IP是设置的OAuth1.0接口的域名,即http://openapi.qzone.qq.com
而OAuth2.0接口的域名变更为了https://graph.qq.com,但是接口里使用的IP仍为OAuth1.0的,所以此处不能设置IP,需要留空。

我这遇到的问题是,QQ互联官方graph.qq.com接口的103.7.30.64服务器ip挂了,只能在服务器中手动指向hosts到另一个ip即可,因为代码中在后台没有设置OAuth2.0的IP地址功能,正好遇到OAuth2.0故障,就导致了失败。
1.png

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2021/3/5 18:15 , Processed in 0.157486 second(s), 22 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表