
使用這些基本 REST API 最佳實踐構建出色的 API
使用前需要再云音樂開發平臺申請app id
提交成功后,等待審核
審核成功?
審核成功后,顯示已入駐狀態
選擇應用管理——創建我的第一個應用?
選擇創建其他應用?
創建應用?
填寫信息?
等待審核?
等待審核通過
應用審核通過后在控制臺的應用詳情中,可以看到應用狀態是:未上線
在下面選擇:接口加密方式(秘鑰) ,填寫方式會在下面章節講
秘鑰
生成秘鑰?
加密方案使用的RSA密鑰位數為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?
生成密鑰對
獲取秘鑰?
appid?
設置APP id?
app_private_key_pkcs8.pem
按照之前的方式,去除頭尾分割線部分、換行和空格,轉換成一行字符串,復制到config
中的APP_PRIVATE_KEY
字段中經過以上步驟可以運行demo了
生成成功后,將公鑰文件app_public_key.pem
給網易云音樂,私鑰app_private_key.pem
和app_private_key_pkcs8.pem
需要合作方妥善保管。
如果是通過命令行生成的密鑰對,用文本編輯工具打開app_public_key.pem
文件,如圖:
公鑰編輯?
您需要將公鑰文件去除頭尾分割線部分、換行和空格,轉換成一行字符串,如圖:
編輯?
復制該單行公鑰字符串,填寫到服務端公鑰位置,并保存(如果是代碼生成的秘鑰對,直接復制生成的公鑰即可)
公鑰傳云音樂?
上傳確認?
注意: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)
}
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
//歌手名(如果是有多歌手的歌曲,歌手名會以“歌手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
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小時,失效后請重新獲取
}
}
})
當不再需要訪問云音樂API時候,可以按需解綁:
override fun onDestroy() {
super.onDestroy()
try {
cmApi?.unregisterEventListener(cmEventListener)
} catch (ignored: Throwable) {
}
if (isBindCMService) {
unbindService(this)
}
}
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?
本文全面且細致地總結了獲取網易云音樂API開放平臺訪問token的完整流程,為音樂應用開發者們提供了一份條理清晰、操作簡便的分步指南。從初始的網易云音樂API開放平臺賬號注冊,到完成開發者身份驗證,再到最終成功取得訪問token,每一步都輔以詳盡的說明與指導,旨在確保開發者們能夠輕松、順利地完成整個流程。在成功獲取訪問token后,本文還著重強調了進行可用性測試的重要性。這一步驟對于確保API能夠無縫集成到音樂應用中,并發揮出最佳效能至關重要。通過測試,開發者們可以及時發現并解決可能存在的問題,為后續的音樂應用開發奠定堅實的基礎。本文不僅為開發者們提供了一份詳盡的指南,更為他們順利獲取并有效利用網易云音樂API開放平臺資源提供了強有力的支持。這不僅有助于提升音樂應用的性能和用戶體驗,更將進一步推動音樂領域的數字化創新與發展。