You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Spotify Android Auth API获取及刷新访问令牌?

Spotify Android 集成:令牌获取与刷新全解析

1. 用户登录后怎么拿到可用的访问令牌?

你踩的第一个坑是混淆了两种授权流的用途:

  • Client Credentials 流:用grant_type=client_credentials拿到的令牌是给服务端用的,没有绑定用户身份,只能调用公开接口(比如搜歌),碰/me开头的用户私有接口肯定会返回401/403,这是设计逻辑导致的。
  • Authorization Code PKCE 流(移动端专用):AuthorizationClient.openLoginActivity用的就是这个流,它会获取带用户权限的令牌,才能访问/me/tracks这类用户私有接口。
    • 不用每次弹登录:只要用户之前授权过你的应用,再次调用这个方法时,SDK会静默校验现有令牌是否有效——没过期直接返回,过期了会自动刷新(下文说明),不会弹出授权弹窗。
    • 拿令牌的正确姿势:在登录回调里(不管是旧的onActivityResult还是新的Activity Result API),从AuthorizationResponse里取accessToken,这个才是能调用用户接口的有效令牌。

2. 令牌过期后怎么自动刷新?

Spotify Android SDK已经把刷新逻辑完全封装好了,不需要你手动调用/api/token接口:

  • 刷新令牌的获取:首次登录成功后,AuthorizationResponse里是包含refreshToken的,用authorizationResponse.getRefreshToken()就能拿到,SDK会自动把它存在应用的SharedPreferences里,不用你手动存储。
  • 自动刷新完全透明:当你用SpotifyApi调用任何接口时,如果当前accessToken过期了,SDK会自动用保存的refreshToken去换取新的accessToken,整个过程对开发者完全透明,你正常调用接口即可。
  • 手动刷新(可选):如果需要主动校验并刷新令牌,可以调用SpotifyApi.refreshAccessToken()方法,它会返回新的有效令牌,也能提前处理令牌过期问题。

额外提醒

  • 登录时一定要加对scope:比如读取私人播放列表需要playlist-read-private,读取收藏曲目需要user-library-read,缺少对应权限的话,接口照样会返回403。
  • 新版Android建议用Activity Result API替代onActivityResult,通过registerForActivityResult(AuthorizationClient.createLoginContract(), callback)处理登录结果,更符合Jetpack规范。

内容的提问来源于stack exchange,提问作者Alex Mortimer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:54:57