鍵.png)
使用這些基本 REST API 最佳實(shí)踐構(gòu)建出色的 API
使用前需要再云音樂開發(fā)平臺(tái)申請(qǐng)app id
提交成功后,等待審核
審核成功?
審核成功后,顯示已入駐狀態(tài)
選擇應(yīng)用管理——?jiǎng)?chuàng)建我的第一個(gè)應(yīng)用?
選擇創(chuàng)建其他應(yīng)用?
創(chuàng)建應(yīng)用?
填寫信息?
等待審核?
等待審核通過
應(yīng)用審核通過后在控制臺(tái)的應(yīng)用詳情中,可以看到應(yīng)用狀態(tài)是:未上線
在下面選擇:接口加密方式(秘鑰) ,填寫方式會(huì)在下面章節(jié)講
秘鑰
生成秘鑰?
加密方案使用的RSA密鑰位數(shù)為2048位,密鑰格式使用PKCS8, 通過使用OpenSSL來生成
app_private_key.pem
openssl genrsa -out app_private_key.pem 2048
app_private_key_pkcs8.pem
openssl pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem
openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem
RSA?
生成密鑰對(duì)
獲取秘鑰?
appid?
設(shè)置APP id?
app_private_key_pkcs8.pem
按照之前的方式,去除頭尾分割線部分、換行和空格,轉(zhuǎn)換成一行字符串,復(fù)制到config
中的APP_PRIVATE_KEY
字段中經(jīng)過以上步驟可以運(yùn)行demo了
生成成功后,將公鑰文件app_public_key.pem
給網(wǎng)易云音樂,私鑰app_private_key.pem
和app_private_key_pkcs8.pem
需要合作方妥善保管。
如果是通過命令行生成的密鑰對(duì),用文本編輯工具打開app_public_key.pem
文件,如圖:
公鑰編輯?
您需要將公鑰文件去除頭尾分割線部分、換行和空格,轉(zhuǎn)換成一行字符串,如圖:
編輯?
復(fù)制該單行公鑰字符串,填寫到服務(wù)端公鑰位置,并保存(如果是代碼生成的秘鑰對(duì),直接復(fù)制生成的公鑰即可)
公鑰傳云音樂?
上傳確認(rèn)?
注意:targetSdkVersion 30 的話使用bindService會(huì)在android11手機(jī)上不成功,需要注意不要使用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)
}
private var cmApi: ICMApi? = null
override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
cmApi = ICMApi.Stub.asInterface(service)
}
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
//歌手名(如果是有多歌手的歌曲,歌手名會(huì)以“歌手A/歌手B”的形式返回)
val artist = get(CMApiConst.EXTRA_MUSIC_ARTIST) as? String
//播放狀態(tài)(0:暫停, 1:播放中)
val playStatus = getInt(CMApiConst.EXTRA_PLAY_STATUS) == CUSTOM_PLAY_STATUS_PLAY
//播放模式(順序,隨機(jī),單曲循環(huán)等)
val playMode = uiHelper.getPlayModeString(getInt(CMApiConst.EXTRA_PLAY_MODE))
}
}
/**
* 播放狀態(tài)
* 0.暫停, 1.播放中
*/
const val EVENT_PLAY_STATUS = "EVENT_PLAY_STATUS"
const val CUSTOM_PLAY_STATUS_PAUSE = 0
const val CUSTOM_PLAY_STATUS_PLAY = 1
private val actionMap = mutableMapOf<String, Any>()
//構(gòu)造加密請(qǐng)求參數(shù)
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") ?: ""
//解密驗(yàn)證參數(shù)
val decryptData = uiHelper.decryptEncryptString(tokenSign)
//decryptData.token 獲取token
//decryptData.expireTime 獲取token失效時(shí)間(時(shí)間戳)默認(rèn)失效時(shí)長(zhǎng)1小時(shí),失效后請(qǐng)重新獲取
}
}
})
當(dāng)不再需要訪問云音樂API時(shí)候,可以按需解綁:
override fun onDestroy() {
super.onDestroy()
try {
cmApi?.unregisterEventListener(cmEventListener)
} catch (ignored: Throwable) {
}
if (isBindCMService) {
unbindService(this)
}
}
Q:如何找到網(wǎng)易云音樂 API
A:冪簡(jiǎn)集成是國(guó)內(nèi)領(lǐng)先的API集成管理平臺(tái),專注于為開發(fā)者提供全面、高效、易用的API集成解決方案。冪簡(jiǎn)API平臺(tái)可以通過以下兩種方式找到所需API:通過關(guān)鍵詞搜索API(例如,輸入’網(wǎng)易云音樂 API‘這類品類詞,更容易找到結(jié)果)、或者從API hub分類頁(yè)進(jìn)入尋找。
Q:圖片和音樂大多數(shù)都是http的, 都能支持https么
A:可以的,已經(jīng)全覆蓋http和https
Q:免費(fèi)可收聽的歌曲占比多少
A:曲庫(kù)免費(fèi)歌曲曲庫(kù)超千萬(wàn),占比90%左右
Q:免費(fèi)下載的歌曲占比多少
A:很少有免費(fèi)下載的,基本都是要vip才能下
Q:歌單和專輯會(huì)重復(fù)么
A:會(huì)有一定概率重復(fù),正常的,不是一個(gè)東西
提供AI大模型API的服務(wù)商除了網(wǎng)易云音樂 API,還有其他替代服務(wù)商也提供類似api服務(wù),例如:
Vagalume API開放平臺(tái)、Binary Jazz API開放平臺(tái)、VCV Rack API開放平臺(tái)
更多競(jìng)品可以在冪簡(jiǎn)集成開放平臺(tái)中找到。
Q:網(wǎng)易云音樂 API這個(gè)密鑰還適用于哪些api?
每日推薦、獲取場(chǎng)景音樂、獲取用戶創(chuàng)建歌單
本文全面且細(xì)致地總結(jié)了獲取網(wǎng)易云音樂API開放平臺(tái)訪問token的完整流程,為音樂應(yīng)用開發(fā)者們提供了一份條理清晰、操作簡(jiǎn)便的分步指南。從初始的網(wǎng)易云音樂API開放平臺(tái)賬號(hào)注冊(cè),到完成開發(fā)者身份驗(yàn)證,再到最終成功取得訪問token,每一步都輔以詳盡的說明與指導(dǎo),旨在確保開發(fā)者們能夠輕松、順利地完成整個(gè)流程。在成功獲取訪問token后,本文還著重強(qiáng)調(diào)了進(jìn)行可用性測(cè)試的重要性。這一步驟對(duì)于確保API能夠無縫集成到音樂應(yīng)用中,并發(fā)揮出最佳效能至關(guān)重要。通過測(cè)試,開發(fā)者們可以及時(shí)發(fā)現(xiàn)并解決可能存在的問題,為后續(xù)的音樂應(yīng)用開發(fā)奠定堅(jiān)實(shí)的基礎(chǔ)。本文不僅為開發(fā)者們提供了一份詳盡的指南,更為他們順利獲取并有效利用網(wǎng)易云音樂API開放平臺(tái)資源提供了強(qiáng)有力的支持。這不僅有助于提升音樂應(yīng)用的性能和用戶體驗(yàn),更將進(jìn)一步推動(dòng)音樂領(lǐng)域的數(shù)字化創(chuàng)新與發(fā)展。
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)