网易云音乐 API开放平台访问token分步指南
在当今数字化娱乐与创新的洪流中,高效、灵活的音乐数据访问与操作接口已成为众多音乐应用开发者不可或缺的利器。网易云音乐API开放平台,作为音乐数据服务领域的佼佼者,凭借其丰富的音乐资源、精准的数据分析以及广泛的应用场景,正逐步成为开发者们的心头好。为了帮助广大开发者快速上手并充分利用这一宝贵资源,本文特别推出了“网易云音乐API开放平台访问token分步指南”。通过一系列条理清晰、易于跟随的步骤,你将能够轻松掌握如何获取网易云音乐API的访问token,进而解锁其强大的音乐数据服务。无论你是致力于音乐推荐、歌词显示,还是其他音乐相关的应用开发,获取网易云音乐API的访问token都将是你迈向音乐应用创新之旅的关键一步。
1. 登录/注册网易云音乐 API开放平台
2 APP ID 申请
使用前需要再云音乐开发平台申请app id
2.1 账号入驻
- 进入网页:https://developer.music.163.com/st/developer/ 登录后,点击导航栏右上角“立即入驻”按钮
- 填写相关的企业信息,然后提交申请入驻
提交成功后,等待审核
审核成功
审核成功后,显示已入驻状态
2.2 创建应用
选择应用管理——创建我的第一个应用
选择创建其他应用
创建应用
填写信息
等待审核
等待审核通过
应用审核通过后在控制台的应用详情中,可以看到应用状态是:未上线
2.3 控制台
在下面选择:接口加密方式(秘钥) ,填写方式会在下面章节讲
秘钥
生成秘钥
3. 生成密钥对
3.1 方法一:使用命令行生成密钥对
加密方案使用的RSA密钥位数为2048位,密钥格式使用PKCS8, 通过使用OpenSSL来生成
- 生成原始RSA私钥文件
app_private_key.pem
openssl genrsa -out app_private_key.pem 2048
- 需要将原始 RSA私钥转换为 pkcs8格式,得到文件
app_private_key_pkcs8.pem
openssl pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem
- 生成RSA公钥文件 app_public_key.pem
openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem
3.2 方法二:也可以通过代码生成秘钥对(备选,demo中示例)
RSA
生成密钥对
获取秘钥
4. demo示例
- 将AppID复制到Demo中的Config.java中APPID字段
appid
设置APP id
- 将生成的三方秘钥对中的私钥文件
app_private_key_pkcs8.pem
按照之前的方式,去除头尾分割线部分、换行和空格,转换成一行字符串,复制到config
中的APP_PRIVATE_KEY
字段中
经过以上步骤可以运行demo了
5. 秘钥使用
生成成功后,将公钥文件app_public_key.pem
给网易云音乐,私钥app_private_key.pem
和app_private_key_pkcs8.pem
需要合作方妥善保管。
如果是通过命令行生成的密钥对,用文本编辑工具打开app_public_key.pem
文件,如图:
公钥编辑
您需要将公钥文件去除头尾分割线部分、换行和空格,转换成一行字符串,如图:
编辑
复制该单行公钥字符串,填写到服务端公钥位置,并保存(如果是代码生成的秘钥对,直接复制生成的公钥即可)
公钥传云音乐
上传确认
6. API调用
6.1 绑定
- 调用前首先绑定CMApiService,冷启动需要先启动云音乐进程
注意:targetSdkVersion 30 的话使用bindService会在android11手机上不成功,需要注意不要使用30及以上
private fun bindCMApiService(): Boolean {
val intent = Intent("com.netease.cloudmusic.third.api.CMApiService")
intent.`package` = "com.netease.cloudmusic"
return bindService(intent, this, Context.BIND_AUTO_CREATE)
}
- 绑定成功后,获取ICMApi接口
private var cmApi: ICMApi? = null
override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
cmApi = ICMApi.Stub.asInterface(service)
}
- 获取ICMApi接口之后,即可通过此接口获取云音乐当前播放的歌曲信息
private fun getPlayInfo() {
cmApi?.execute(CMApiConst.CMD_GET_INFOS, Bundle())?.apply {
//封面(url地址)
val cover = get(CMApiConst.EXTRA_MUSIC_COVER) as? String
//歌曲名
val name = get(CMApiConst.EXTRA_MUSIC_NAME) as? String
//歌手名(如果是有多歌手的歌曲,歌手名会以“歌手A/歌手B”的形式返回)
val artist = get(CMApiConst.EXTRA_MUSIC_ARTIST) as? String
//播放状态(0:暂停, 1:播放中)
val playStatus = getInt(CMApiConst.EXTRA_PLAY_STATUS) == CUSTOM_PLAY_STATUS_PLAY
//播放模式(顺序,随机,单曲循环等)
val playMode = uiHelper.getPlayModeString(getInt(CMApiConst.EXTRA_PLAY_MODE))
}
}
/**
* 播放状态
* 0.暂停, 1.播放中
*/
const val EVENT_PLAY_STATUS = "EVENT_PLAY_STATUS"
const val CUSTOM_PLAY_STATUS_PAUSE = 0
const val CUSTOM_PLAY_STATUS_PLAY = 1
- 为了安全考虑,有些操作都需要通过token进行请求,获取token的方法如下:
private val actionMap = mutableMapOf<String, Any>()
//构造加密请求参数
actionMap["encRequest"] = uiHelper.generateEncryptString()
val actionJson = JSONObject(actionMap as Map<*, *>)
params.putString(CMApiConst.KEY_DATA, actionJson.toString())
cmApi?.executeAsync(CMApiConst.CMAPIGetToken_CMD, "", params, object : ICMApiCallback.Stub() {
override fun onReturn(bundle: Bundle?) {
val ret = bundle?.getInt("code")
if (ret == CMApiConst.RESULT_CODE_SUCCESS) {
val tokenSign = bundle.getString("encResult") ?: ""
//解密验证参数
val decryptData = uiHelper.decryptEncryptString(tokenSign)
//decryptData.token 获取token
//decryptData.expireTime 获取token失效时间(时间戳)默认失效时长1小时,失效后请重新获取
}
}
})
6.2 解绑
当不再需要访问云音乐API时候,可以按需解绑:
override fun onDestroy() {
super.onDestroy()
try {
cmApi?.unregisterEventListener(cmEventListener)
} catch (ignored: Throwable) {
}
if (isBindCMService) {
unbindService(this)
}
}
7. 常见问题
Q:如何找到网易云音乐 API
A:幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台可以通过以下两种方式找到所需API:通过关键词搜索API(例如,输入’网易云音乐 API‘这类品类词,更容易找到结果)、或者从API hub分类页进入寻找。
Q:图片和音乐大多数都是http的, 都能支持https么
A:可以的,已经全覆盖http和https
Q:免费可收听的歌曲占比多少
A:曲库免费歌曲曲库超千万,占比90%左右
Q:免费下载的歌曲占比多少
A:很少有免费下载的,基本都是要vip才能下
Q:歌单和专辑会重复么
A:会有一定概率重复,正常的,不是一个东西
提供AI大模型API的服务商除了网易云音乐 API,还有其他替代服务商也提供类似api服务,例如:
Vagalume API开放平台、Binary Jazz API开放平台、VCV Rack API开放平台
更多竞品可以在幂简集成开放平台中找到。
Q:网易云音乐 API这个密钥还适用于哪些api?
8. 总结
本文全面且细致地总结了获取网易云音乐API开放平台访问token的完整流程,为音乐应用开发者们提供了一份条理清晰、操作简便的分步指南。从初始的网易云音乐API开放平台账号注册,到完成开发者身份验证,再到最终成功取得访问token,每一步都辅以详尽的说明与指导,旨在确保开发者们能够轻松、顺利地完成整个流程。在成功获取访问token后,本文还着重强调了进行可用性测试的重要性。这一步骤对于确保API能够无缝集成到音乐应用中,并发挥出最佳效能至关重要。通过测试,开发者们可以及时发现并解决可能存在的问题,为后续的音乐应用开发奠定坚实的基础。本文不仅为开发者们提供了一份详尽的指南,更为他们顺利获取并有效利用网易云音乐API开放平台资源提供了强有力的支持。这不仅有助于提升音乐应用的性能和用户体验,更将进一步推动音乐领域的数字化创新与发展。