这一页引发403的原因是下面一句

if(!$openid) exit('error: 403 Access Denied, no openid');

$openid = $_SESSION["openid"];

admin at 2013-08-22 21:27:31
1

是我搞错,1楼权当没发,

所说的应该是qq 返回的一个403 代码,这个应该是应用还没提交或通过QQ审核。

admin at 2013-08-22 21:30:31
2

@admin

我注释掉

//error_reporting(0);
session_start();

$name = $_SESSION["nick"];
$openid = $_SESSION["openid"];

//if(!$openid) exit('error: 403 Access Denied');

然后成功登陆了

lincanbin at 2013-08-22 22:13:43
3

@admin 哦,不对,是因为openid为空成功写入了QQweibo表
所以任意账号都能登陆了
我这边怎么无法获取到openid

lincanbin at 2013-08-22 22:15:40
4

@lincanbin 在站内搜索 openid 403 看到这个帖子了 http://youbbs.sinaapp.com/t/912 2

admin at 2013-08-22 22:22:45
5

一步步排查过去
在获取access_token那一步就失败了

lincanbin at 2013-08-22 22:50:59
6

@admin

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;
}

这里有检测file_get_contents函数支持的
应该不是file_get_contents函数的问题吧?

lincanbin at 2013-08-22 23:06:36
7

@admin 新浪微博登陆是成功的

lincanbin at 2013-08-22 23:07:11
8

@admin 好吧,写了几个测试,发现确实是https的问题
我的是买的虚拟主机,无解了

lincanbin at 2013-08-22 23:14:43
9

已解决

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);
	//debug
	curl_setopt($ch, CURLOPT_FAILONERROR, FALSE);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	//debug end
    curl_setopt($ch, CURLOPT_URL, $url);
    $result =  curl_exec($ch);
    curl_close($ch);

    return $result;
}

注释掉了对 file_get_contents函数支持的判断
改用curl

lincanbin at 2013-08-22 23:23:28
10
登录 后发表评论