跳转至

Credential

Credential 用于保存 QQ 音乐登录态相关数据,并在需要登录的接口中作为凭证使用。

核心字段

字段 类型 必需 说明
musicid int 账号标识。QQ 登录通常是 QQ 号,微信登录通常是更长的数字 ID。
musickey str 登录态 Key,通常以 Q_H_L_W_X_ 开头。
refresh_key str 用于刷新登录态。
refresh_token str 用于刷新登录态。
encrypt_uin str 部分接口会返回的加密账号标识。

常见组合

musickey 前缀 musicid 形态 说明
Q_H_L_ 6-11 位数字 QQ 账号登录
W_X_ 最长可到 19 位 微信账号登录

全局使用

import asyncio

from qqmusic_api import Client, Credential


async def main() -> None:
    credential = Credential(musicid=123456, musickey="Q_H_L_xxx")

    async with Client(credential=credential) as client:
        result = await client.user.get_euin(credential.musicid)
        print(result)


asyncio.run(main())

单次请求覆盖

如果你不想把凭证绑定到整个 Client,需要 Crential 的接口都支持使用 credential 参数进行单次请求覆盖。

import asyncio
from qqmusic_api import Client, Credential

async def main() -> None:
    async with Client() as client:
        credential = Credential(musicid=123456, musickey="Q_H_L_xxx")
        result = await client.song.get_song_urls(..., credential=credential)
        print(result)

asyncio.run(main())

刷新

可以通过 client.login.check_expiredcredential.is_expired() 来判断是否过期。

Note

credential.is_expired() 只是简单的通过时间戳判断是否过期

import asyncio
from qqmusic_api import Client, Credential

async def main() -> None:
    async with Client() as client:
        credential = Credential(
            musicid=123456,
            musickey="Q_H_L_xxx",
            refresh_key="xxx",
            refresh_token="xxx",
            access_token="xxx",
        )
        await credential.refresh(client)
        print(credential.musicid, credential.musickey)

asyncio.run(main())