2 APP ID 申請(qǐng)

使用前需要再云音樂開發(fā)平臺(tái)申請(qǐng)app id

2.1 賬號(hào)入駐

  1. 進(jìn)入網(wǎng)頁(yè):https://developer.music.163.com/st/developer/ 登錄后,點(diǎn)擊導(dǎo)航欄右上角“立即入駐”按鈕
  2. 填寫相關(guān)的企業(yè)信息,然后提交申請(qǐng)入駐

提交成功后,等待審核

審核成功?

審核成功后,顯示已入駐狀態(tài)

2.2 創(chuàng)建應(yīng)用

選擇應(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)是:未上線

2.3 控制臺(tái)

在下面選擇:接口加密方式(秘鑰) ,填寫方式會(huì)在下面章節(jié)講

秘鑰

生成秘鑰?

3. 生成密鑰對(duì)

3.1 方法一:使用命令行生成密鑰對(duì)

加密方案使用的RSA密鑰位數(shù)為2048位,密鑰格式使用PKCS8, 通過使用OpenSSL來生成

  1. 生成原始RSA私鑰文件app_private_key.pem
openssl genrsa -out app_private_key.pem 2048
  1. 需要將原始 RSA私鑰轉(zhuǎn)換為 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
  1. 生成RSA公鑰文件 app_public_key.pem
openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem

3.2 方法二:也可以通過代碼生成秘鑰對(duì)(備選,demo中示例)

RSA?

生成密鑰對(duì) 

獲取秘鑰?

4. demo示例

  1. 將AppID復(fù)制到Demo中的Config.java中APPID字段

appid?

設(shè)置APP id?

  1. 將生成的三方秘鑰對(duì)中的私鑰文件app_private_key_pkcs8.pem按照之前的方式,去除頭尾分割線部分、換行和空格,轉(zhuǎn)換成一行字符串,復(fù)制到config中的APP_PRIVATE_KEY字段中

經(jīng)過以上步驟可以運(yùn)行demo了

5. 秘鑰使用

生成成功后,將公鑰文件app_public_key.pem給網(wǎng)易云音樂,私鑰app_private_key.pemapp_private_key_pkcs8.pem需要合作方妥善保管。

如果是通過命令行生成的密鑰對(duì),用文本編輯工具打開app_public_key.pem文件,如圖:

公鑰編輯?

您需要將公鑰文件去除頭尾分割線部分、換行和空格,轉(zhuǎn)換成一行字符串,如圖:

編輯?

復(fù)制該單行公鑰字符串,填寫到服務(wù)端公鑰位置,并保存(如果是代碼生成的秘鑰對(duì),直接復(fù)制生成的公鑰即可)

公鑰傳云音樂?

上傳確認(rèn)?

6. API調(diào)用

6.1 綁定

  1. 調(diào)用前首先綁定CMApiService,冷啟動(dòng)需要先啟動(dòng)云音樂進(jì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) }
  1. 綁定成功后,獲取ICMApi接口
private var cmApi: ICMApi? = null

override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
cmApi = ICMApi.Stub.asInterface(service)
}
  1. 獲取ICMApi接口之后,即可通過此接口獲取云音樂當(dāng)前播放的歌曲信息
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
  1. 為了安全考慮,有些操作都需要通過token進(jìn)行請(qǐng)求,獲取token的方法如下:
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)重新獲取
}
}
})

6.2 解綁

當(dāng)不再需要訪問云音樂API時(shí)候,可以按需解綁:

override fun onDestroy() {
super.onDestroy()
try {
cmApi?.unregisterEventListener(cmEventListener)
} catch (ignored: Throwable) {
}
if (isBindCMService) {
unbindService(this)
}
}

7. 常見問題

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è)東西

Q:網(wǎng)易云音樂 API的替代品有哪些?

提供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)建歌單

8.? 總結(jié)

本文全面且細(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ā)展。

上一篇:

網(wǎng)易企業(yè)郵箱 API開放平臺(tái)訪問token分步指南

下一篇:

如何申請(qǐng)和獲取ipgeolocation API key 密鑰: 詳細(xì)操作指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)