认证机制
大多数接口既支持未登录调用,也支持携带登录态调用。涉及账户信息、歌单管理、云盘、私信、签到等接口时,通常需要 Cookie。
在 SDK 里怎么传认证信息
认证信息放在 config 里,不放在业务参数里。常见写法有 3 种:
createHanaMusicApi(config)适合绑定共享 Cookie- 原始模块函数采用
(query, config?) invokeModule(identifier, query, config?)继续支持动态调用
支持的登录方式
手机号登录
对应接口:/login/cellphone
适合账号密码或验证码登录场景,支持:
phone + passwordphone + md5_passwordphone + captcha
邮箱登录
对应接口:/login
适合使用网易邮箱的账号登录,支持密码和 MD5 密码。
二维码登录
对应接口:
/login/qr/key/login/qr/create/login/qr/check
推荐流程:
- 先获取二维码 key
- 再生成二维码内容或 base64 图片
- 轮询检查扫码状态
建议轮询类请求带上时间戳,避免缓存影响状态更新。
游客登录
对应接口:/register/anonimous
适合在未登录状态下先获得游客 Cookie,减少部分接口返回校验错误的概率。
Cookie 的使用方式
登录成功后,返回体中通常会包含 cookie 字段。后续调用需要登录的接口时,可以通过以下方式传入:
- HTTP GET 请求:把
cookie放到 query 参数里 - HTTP POST 请求:把
cookie放到 body 中 - SDK 调用:把
cookie放到config,而不是业务参数
SDK 调用实践
ts
import { createHanaMusicApi } from 'hana-music-api'
const hana = createHanaMusicApi({
cookie: 'MUSIC_U=your-cookie',
})
const detail = await hana.userAccount({})
console.log(detail.body)或者单函数调用:
ts
import { userAccount } from 'hana-music-api'
const detail = await userAccount(
{},
{
cookie: 'MUSIC_U=your-cookie',
},
)注意事项
- 不要频繁调用登录接口,登录态接口优先复用已有 Cookie,重复登录可能触发风控
- 登录接口通常比普通接口更慢,因为会经过额外加密逻辑
- 跨域请求务必确保携带 Cookie
- 登录后仍遇到
301或类似状态时,优先检查缓存和 Cookie 是否正确传递 - Web 客户端优先用二维码或验证码登录,服务端或脚本调用保存登录返回的
cookie