看见音乐API
  1. 认证接入指引
看见音乐API
  • 看见音乐公共开放平台概述
  • 新手指引
    • 开发者入驻流程
  • 认证接入指引
    • 密钥方式接入
  • 星接开发能力
    • 接入指南
    • 星接歌曲信息
      • 星接歌曲查询接口
      • 星接歌曲试听接口
      • 星接歌曲下载接口
      • 星接歌曲歌词查询接口
      • 星接歌曲伴奏查询接口
    • 星接歌单信息
      • 星接歌单详情查询接口
      • 星接歌单列表查询接口
    • 星接歌曲附属信息
      • 星接歌曲授权书信息
    • 星接歌词信息
      • 星接站内歌曲歌词获取接口
      • 星接全网歌曲歌词搜索
      • 星接全网歌词获取接口
      • 歌词SDK的search方法
      • 歌词SDK获取歌词方法
    • 星接运营数据上报接口
      • 星接歌曲数据上报
      • 星接歌词数据上报
  • 公共开放数据
  • 看见标准
  1. 认证接入指引

密钥方式接入

服务端API开放了与音频文件相关的获取与通知接口,开发者通过调用相关接口,实现数据接收和数据通知,通过目录导航可以快速预览,目录树按功能块聚合归类,如歌曲接口、标签接口、通知接口等。
文档的阅读次序,建议先阅读一遍开发指南重点阅读接口公共参数说明、接口摘要(sign)生成、接口请求参数内容(content)的生成。然后就可以独立查看各个功能块文档说明。
接口说明格式如下:
请求方式:GET/POST
请求地址:{domain}/track/listen?appKey={appKey}&content={content}&sign={sign}&timestamp={timestamp}&version={version}
请求参数说明: ...
返回结果: ...
返回参数说明: ...
请求方式,标注接口调用的HTTP方法
请求地址 ,参数中{}中的变量,表示为需要替换的变量,根据实际获取值更新
接口公共参数说明
服务端所有的GET请求接口统一传参要求如下表格
参数类型必须说明
appKeystring是接口调用方身份标识
timestamplong是接口请求时间戳(毫秒级)
signstring是各接口的请求参数经一定规则生成的摘要
contentstring是各接口的请求参数经一定规则生成的内容
versionint是各接口版本,如各接口未说明,传1所有接口请求失效时间1分钟
接口摘要(sign)生成
接口摘要的主要作用是为了校验调用方的摘要生成规则是否正确
服务端会将调用方传过来的加密内容content解密后,拿到请求参数进行sign生成并与调用方传过来的sign值进行比对
生成规则:根据各接口说明文档的传参说明,将各个接口需要传递的参数放到Map结构中,并按照Map中的key进行排序,然后将参数的key和value拼接成Get请求的参数形式,进行MD5加密,生成sign
以下为java生成sign代码参考
public String sort(Map params) {
     List<Map.Entry<String, Object>> argList = new LinkedList<Map.Entry<String,Object>>();
     argList.addAll(params.entrySet());
     Collections.sort(argList, Map.Entry.comparingByKey());
     StringBuilder sb = new StringBuilder();
     for (Map.Entry<String, Object> item : argList) {
         String key = item.getKey();
         String val = String.valueOf(item.getValue());
         if (!(val == "" || val == null)) {
             sb.append(key + "=" + val + "&");
         }
     }
     return SecureUtil.md5(sb.toString());
 }
Copy to clipboard
以下为给定具体参数生成的sign值示例,调式时可以以此为参考
假设请求接口为 /track/link
给定歌曲uid:Tsb7hqAIZ
给定系统当前时间戳:1652336117133
则生成的sign值为:ea838de5a1c23c1eae0583688b288c1d
接口请求参数内容(content)的生成
服务端会根据调用方的身份查询配置给调用方的私钥对传过来的content进行解密,从而获取到调用接口的请求参数
生成规则:根据各接口说明文档的传参说明,将各个接口需要传递的参数放到Map结构中,将放到map后的参数转换为json字符串,开发者根据给到的私钥(appSecret)对请求参数进行AES加密,之后进行base64得到content
以下为java生成content代码参考
import org.apache.tomcat.util.buf.HexUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;

/**
 * requestParamsJson 转换为json字符串的请求参数
 */
public String encrypt(String requestParamsJson, String appSecret) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    byte[] bs = HexUtils.fromHexString(appSecret);
    Key key = new SecretKeySpec(bs,"AES");
    cipher.init(Cipher.ENCRYPT_MODE, key);
    byte[] p = requestParamsJson.getBytes("UTF-8");
    byte[] result = cipher.doFinal(p);
    String content = Base64Encoder.encode(result);
    return content;
}
Copy to clipboard
以下为给定具体参数生成的content值示例,调式时可以以此为参考
假设请求接口为 /track/link
给定歌曲uid:Tsb7hqAIZ
给定系统当前时间戳:1652336117133
给定的密钥: 25f12398d9f99adc27128734804b7721
那么入参requestParamsJson的值为{"uid":"Tsb7hqAIZ","timestamp":1652336117133}
appSecret的值为25f12398d9f99adc27128734804b7721时
则生成的content值为:CCo+rDCB3hx9KQN/grgdk277xW9GAjJweANzvkQpqmLZfZOFp0pYq3YQaszmaIod
接口调用流程
查看调用接口的请求参数
生成接口摘要(sign)
生成接口请求参数内容(content)
调用具体的业务API接口
上一页
开发者入驻流程
下一页
接入指南
Built with