示例地址:https://www.goodtools.xyz/login/login_index.php
使用chatgpt推荐的file_get_contents()函数始终报错,因此多次调试后换用curl成功,源代码如下,网上各种各样的百度php登录代码都试了一遍,都不行,分享出来给需要的人
if (isset($_GET['code'])) {
// 获取code
$code = $_GET['code'];
echo 'code为' . $code;
$client_id = '你的id';
$client_secret = '你的secret';
$redirect_uri = '百度工程里的回调地址';
$url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=$code&client_id=$client_id&client_secret=$client_secret&redirect_uri=$redirect_uri";
// echo "<br/>"; //调试用
// echo $url; //调试用
//使用curl获取百度返回的json;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
if ($response === false) {
$error = error_get_last();
echo "<br/>" . "错误说明:";
var_dump($error); // 输出错误消息的详细信息
$error = curl_error($ch);
echo "cURL Error: " . $error;
} else {
$data = json_decode($response, true);
// echo "<br/>"; //调试用
// echo 'response=' . $response;//调试用
// echo "<br/>";//调试用
// echo 'data=';//调试用
// print_r($data); // 调试用,输出数组
// 使用访问令牌获取用户信息
$access_token = $data['access_token'];
echo 'access_token'.$access_token;// 调试用,输出数组
$urlt = "https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser?access_token=$access_token";
$cht = curl_init($urlt);
curl_setopt($cht, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cht, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cht, CURLOPT_SSL_VERIFYPEER, false);
$responset = curl_exec($cht);
if ($responset === false) {
$error = error_get_last();
echo "<br/>" . "错误说明:";
var_dump($error); // 输出错误消息的详细信息
}
$user_info = json_decode($responset, true);
// 获取用户信息
$uname = $user_info['uname'];
$portrait = $user_info['portrait'];
// 显示用户信息
echo '<h1>欢迎您,' . $uname . '</h1>';
}
本文分享了如何在2023年使用PHP通过curl实现百度账号授权登录第三方网站的方法,解决了file_get_contents()函数报错的问题。提供了一个示例地址和经过调试成功的源代码。
20万+

被折叠的 条评论
为什么被折叠?



