lincanbin avatar

QQ登陆get_openid失败是怎么回事?

🕑 by lincanbin

返回403错误

💘 相关文章

评论

共10条关于"QQ登陆get_openid失败是怎么回事?"的评论

admin avatar
#1 admin 回复

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

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

$openid = $_SESSION["openid"];

admin avatar
#2 admin 回复

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

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

lincanbin avatar
#3 lincanbin 回复

@admin

我注释掉

1
2
3
4
5
6
7
//error_reporting(0);
session_start();

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

//if(!$openid) exit('error: 403 Access Denied');
然后成功登陆了

lincanbin avatar
#4 lincanbin 回复

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

lincanbin avatar
#6 lincanbin 回复

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

lincanbin avatar
#7 lincanbin 回复

@admin

1
2
3
4
5
6
7
8
9
10
11
12
13
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 avatar
#9 lincanbin 回复

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

lincanbin avatar
#10 lincanbin 回复

已解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

写一条评论

Based on Golang + fastHTTP + sdb | go1.17.6 Processed in 1ms