默然云后台管理系统
APIpost文档
APIpost文档
  1. 必看
  • 更新日志
  • 必看
    • 必看文档!!!
    • 获取当前时间戳
    • 输出数据解密
    • 生成签名
    • 更新日志
      GET
    • 必看文档
      GET
    • 生成签名
      GET
  • APP相关
    • 获取APP信息
      POST
    • 获取APP更新记录
      POST
    • 增加APP访问量
      POST
    • 获取APP相关统计数据
      POST
    • 利用appkey 增减 用户金币或积分 会员天数
      POST
  • 用户相关
    • 用户登录
      POST
    • 获取图片验证码
      POST
    • 手机号登录
      POST
    • 获取短信验证码
      POST
    • 用户注册
      POST
    • 获取邮箱验证码
      POST
    • 用户心跳
      POST
    • 退出登录
      POST
    • 获取用户信息
      POST
    • 获取登录用户的全部信息
      POST
    • 用户签到
      POST
    • 找回密码
      POST
    • 上传头像
      POST
    • 上传背景
      POST
    • 修改密码
      POST
    • 修改用户信息
      POST
    • 修改用户邮箱
      POST
    • 修改手机号
      POST
    • 填写邀请码
      POST
    • 积分排行榜
      POST
    • 邀请排行榜
      POST
    • 取消关注用户
      POST
    • 查询关注列表
      POST
    • 查询粉丝列表
      POST
    • 获取用户账单
      POST
    • 查询关注状态
      POST
    • QQ登录
      POST
    • 用户提现
      POST
    • 绑定QQ登录
      POST
    • 获取用户提现记录
      POST
    • qq一键注册并登录
      POST
    • 解绑QQ
      POST
  • 卡密相关
    • 使用直冲卡密
    • 使用登录卡密
    • 卡密自动登录
  • 商城相关
    • 商品列表
    • 获取商品信息
    • 购买商品
    • 获取订单记录
  • 论坛相关
    • 获取板块列表
    • 获取板块信息
    • 获取帖子列表
    • 获取推荐帖子(只有正常帖子才会推荐)
    • 获取帖子信息
    • 发布帖子
    • 删除帖子
    • 发表评论
    • 编辑帖子
    • 删除评论
    • 获取评论列表
    • 取消点赞帖子
    • 获取点赞记录
    • 浏览历史
    • 审核帖子
    • 获取待审核的帖子
    • 帖子状态修改
    • 获取我的关注的帖子
    • 打赏帖子
    • 对需要支付的帖子进行支付
    • 获取关注用户的帖子列表
    • 对评论的打赏
    • 取消收藏帖子
    • 获取收藏记录
    • 获取举报标签
    • 举报帖子或评论
    • 获取用户举报记录
    • 获取待审核评论列表
    • 审核评论
  • 消息通知
    • 获取消息通知
    • 获取未读消息通知数量
    • 一键清除消息通知
  • 笔记管理
    • 获取用户笔记
    • 获取用户笔记详情
    • 修改笔记
    • 删除笔记
    • 添加笔记
  • 私聊系统
    • 发送消息
    • 获取用户消息列表
    • 获取聊天记录
  • 应用商店
    • 获取应用分类列表
    • 获取分类的下级分类列表
    • 获取应用列表
    • 获取应用详情
    • 获取该应用的历史版本
    • 发布应用
    • 发布新版本
    • 修改应用信息
    • 获取用户自己已上传的应用列表
    • 获取评论列表
    • 发表评论
    • 删除应用或应用版本
    • 删除评论
    • 增加下载量
    • 对需要支付的应用进行支付
    • 对应用打赏
  • 发送邮件接口
    POST
  • 上传返回直链
    POST
  1. 必看

生成签名

GET
http://test1.moranblog.cn/
最后修改时间:2023-08-01 02:54:48
责任人:未设置
生成数据签名的目的是确保数据的完整性和身份验证。数据签名是通过使用加密算法和密钥对数据进行处理,生成一个唯一的标识,称为签名。这个签名可以用来验证数据在传输或存储过程中是否被篡改过,并且可以确定数据的来源是否合法。

> 注:只有data里面的数据进行了签名,其他数据不进行签名

PHP方法:

php
//生成签名
function generateSignature($params, $secretKey)
{
    // 对参数按照键名进行升序排序
    ksort($params);
    // 构建待签名字符串
    $signString = $this->buildSignString($params);
    // 生成签名
    $signature = hash_hmac('sha256', $signString, $secretKey);
    return $signature;
}

//构建签名字符串
function buildSignString($params, $prefix = '')
{
    $signString = '';
    foreach ($params as $key => $value) {
        if (is_array($value)) {
            // 如果值是数组,则进行递归处理
            $subPrefix = $prefix ? $prefix . '[' . $key . ']' : $key;
            $signString .= $this->buildSignString($value, $subPrefix);
        } else {
            $paramKey = $prefix ? $prefix . '[' . $key . ']' : $key;
            $signString .= $paramKey . '=' . $value . '&';
        }
    }
    return $signString;
}

JAVA 方法:
> 需要第三方依赖 com.google.gson

java
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.TreeMap;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class SignatureGenerator {

    public String generateSignatureFromJson(String json, String secretKey)
            throws NoSuchAlgorithmException, InvalidKeyException {
        Gson gson = new Gson();
        TypeToken<Map<String, Object>> typeToken = new TypeToken<Map<String, Object>>() {
        };
        Map<String, Object> params = gson.fromJson(json, typeToken.getType());

        TreeMap<String, Object> sortedParams = new TreeMap<>(params);
        String signString = buildSignString(sortedParams, "");
        System.out.println("Sign String: " + signString);
        return calculateHmacSha256(signString, secretKey);
    }

    private String buildSignString(Map<String, Object> params, String prefix) {
        StringBuilder signString = new StringBuilder();
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            String key = entry.getKey();
            Object value = entry.getValue();
            String paramKey = prefix + key;
            if (value instanceof Map) {
                @SuppressWarnings("unchecked")
                Map<String, Object> subParams = (Map<String, Object>) value;
                signString.append(buildSignString(subParams, paramKey + "."));
            } else {
                signString.append(paramKey).append("=").append(value).append("&");
            }
        }
        return signString.toString();
    }

    private String calculateHmacSha256(String data, String secretKey)
            throws NoSuchAlgorithmException, InvalidKeyException {
        Mac hmacSha256 = Mac.getInstance("HmacSHA256");
        SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
        hmacSha256.init(secretKeySpec);
        byte[] hmacBytes = hmacSha256.doFinal(data.getBytes(StandardCharsets.UTF_8));
        StringBuilder hexString = new StringBuilder();
        for (byte hmacByte : hmacBytes) {
            String hex = Integer.toHexString(0xFF & hmacByte);
            if (hex.length() == 1) {
                hexString.append('0');
            }
            hexString.append(hex);
        }
        return hexString.toString();
    }

    public static void main(String[] args) {
        SignatureGenerator signatureGenerator = new SignatureGenerator();

        String json = "{\"appname\":\"默然博客\",\"appicon\":\"http://moranhtpro.cn/android.png\",\"application_introduction\":\"\",\"developer_contact_info\":\"\",\"official_group\":\"\",\"announcement_configuration\":{\"title\":\"\",\"content\":\"\"},\"updates_info\":{\"update_version\":\"1.0\",\"update_url\":\"\",\"update_content\":\"\"},\"app_exten_info\":[]}";
        String secretKey = "osnjZbhHDpartfN9XLBiJSO4xzgKkTy7";
        try {
            String signature = signatureGenerator.generateSignatureFromJson(json, secretKey);
            System.out.println("Signature: " + signature);
        } catch (NoSuchAlgorithmException | InvalidKeyException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

请求参数

无

示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request GET 'http://test1.moranblog.cn/'

返回响应

🟢200成功
application/json
Body
object {0}
示例
{}
🟢200错误
上一页
必看文档
下一页
获取APP信息
Built with