由于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=

  • 保存,然后查看你的博客