由于halo-theme-hao更新到1.5.0版本 使用了插件并且在前端代码写死了接口地址。以下内容已失效
适配 halo-theme-hao 主题
解决爱发电官方开启的跨域导致的无法获取赞助列表
如果你不想部署也可以使用我提供的api 无需token
https://meimgapi.likesrt.com/sponsor.php/?user_id=
填入主题设置中的 爱发电赞助 接口地址 即可
部署API接口
在你的服务器新建一个网站,运行环境选PHP 建议PHP7以上
进入网站根目录 新建或者修改
index.php
文件,填入以下内容:
<?php
$token = "爱发电后台获取";
function get_sponsor_list($user_id) {
global $token;
// 设置允许跨域请求
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type");
// 构造请求参数
$params = array(
"page" => 1
);
// 转换为JSON字符串
$params_str = json_encode($params);
// 获取当前时间戳
$ts = time();
// 构造签名
$sign = md5($token . "params" . $params_str . "ts" . $ts . "user_id" . $user_id);
// 构造请求数据
$data = array(
"user_id" => $user_id,
"params" => $params_str,
"ts" => $ts,
"sign" => $sign
);
// 发送请求
$url = "https://afdian.net/api/open/query-sponsor";
$options = array(
"http" => array(
"header" => "Content-Type: application/json",
"method" => "POST",
"content" => json_encode($data)
)
);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
// 处理响应
if ($response !== false) {
$result = json_decode($response, true);
if ($result["ec"] == 200) {
$sponsors = $result["data"]["list"];
$sponsor_list = array();
foreach ($sponsors as $sponsor) {
$user = $sponsor["user"];
$sponsor_user_id = $user["user_id"];
$username = $user["name"];
$avatar = $user["avatar"];
$sponsor_info = array(
"user_id" => $sponsor_user_id,
"name" => $username,
"avatar" => $avatar
);
$sponsor_list[] = $sponsor_info;
}
$response_data = array(
"ec" => 200,
"data" => array("list" => $sponsor_list)
);
} else {
$error_msg = $result["em"];
$ec = $result["ec"];
$response_data = array(
"ec" => $ec,
"msg" => $error_msg
);
}
} else {
$response_data = array(
"ec" => 500,
"Error" => "Failed to retrieve sponsor list"
);
}
// 返回响应
header("Content-Type: application/json");
echo json_encode($response_data);
}
// 处理请求
if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET["user_id"])) {
$user_id = $_GET["user_id"];
get_sponsor_list($user_id);
} else {
$response_data = array(
"ec" => 400,
"msg" => "Invalid request"
);
header("Content-Type: application/json");
echo json_encode($response_data);
}
?>
修改代码顶部的
$token = "爱发电后台获取";
访问网站绑定的域名。就可以看到赞助者列表。
在halo-theme-hao 使用API
登入
Halo
后台管理进入 外观 -> 主题 -> 侧栏 找到爱发电赞助的设置
填入api地址
http(s)://你的域名/?user_id=
保存,然后查看你的博客
参与讨论