youbbs qqcallback 404 qqsetname error:403 Access Denied的解决办法

By admin at 2013-03-28 08:25:54 • 1239点击

先说qqcallback404:这段时间一直在琢磨youbbs的QQ登陆问题,最初是登陆时点击账户出现404先发了第一个帖子,见http://youbbs.sinaapp.com/t/890 搞来搞去把rewrite也搞废了,重新安装rewrite后 想着应该不是rewrite组件的原因 看了看.hatcass 尝试着将RewriteRule 404 /404.html移到规则的最下面,这下不404了
之前是用的get_info的方式 也就是腾讯微博验证 与get_user_info的差别youbbs在这里回复5、6楼也有介绍http://youbbs.sinaapp.com/t/293 测试账号没有开通微博 提示未开通或不足3个月(默认是这样)以为屏蔽或修改这个判断if(!$regtime || ($timestamp - $regtime)<7776000))也就不觉得奇怪了 但是我添加另一个QQ测试依然无法登陆,用这个get_user_info一直是403,找了2个有相同问题的帖子http://youbbs.sinaapp.com/t/310http://youbbs.sinaapp.com/t/538 没解决。网上找php session相关的 确实也打开了 查看保存的sess文件时发现问题了

再找php qq登录 在这里http://www.alixixi.com/program/a/2012111785305.shtml 发现果然是php.ini的原因 file_get_content默认不支持访问https,如果要支持需配置php.ini,激活 php_openssl.dll 模块。或者可以用curl函数来替代。这里可以看到一些值都获取到了

修改/api下qq_utils.php 将

function get_url_contents($url)
{
    if (ini_get("allow_url_fopen") == "1")
        return file_get_contents($url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_URL, $url);
    $result =  curl_exec($ch);
    curl_close($ch);
    return $result;
}

替换为:
function get_url_contents($url)
{
     $ch = curl_init();    
     curl_setopt($ch, CURLOPT_URL,$url);    
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
     $result = curl_exec($ch);    
     return $result;
}

目前尚无回复
该帖评论已关闭