如何为Android应用配置Spotify API重定向URI白名单?
解决Spotify API重定向URI白名单配置困惑
为什么Spotify需要重定向URI白名单?
和你之前对接的天气API不同,天气API是单向请求:你的应用主动发起请求获取数据,不需要第三方服务反向调用你的应用。而Spotify采用OAuth2.0授权机制,这是一套双向交互流程:
- 你的应用引导用户跳转到Spotify的授权页面完成授权操作
- 用户授权后,Spotify需要把授权凭证(比如授权码)传递回你的应用
为了防止恶意网站冒充你的应用接收授权凭证,Spotify要求提前将可信的回调地址(重定向URI)加入白名单,仅名单内的地址能触发回调。
Android应用的重定向URI配置步骤
1. 在Spotify开发者后台配置白名单
- 登录Spotify开发者控制台,找到你的目标应用
- 进入「Settings」页面,在「Redirect URIs」区域添加自定义URI,建议采用应用包名前缀的自定义scheme,示例格式:
com.your.app.package.spotify://callback - 保存修改,确保URI无空格、scheme和host格式规范
2. 在Android项目中配置Intent Filter
打开AndroidManifest.xml,找到用于处理授权回调的Activity(可为主Activity或专门的回调Activity),添加如下intent-filter:
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 此处配置需与Spotify后台填写的URI完全匹配 --> <data android:scheme="com.your.app.package.spotify" android:host="callback" /> </intent-filter>
该配置会告诉Android系统:当收到指向com.your.app.package.spotify://callback的跳转请求时,启动当前Activity处理回调。
3. 在代码中处理回调数据
在配置了intent-filter的Activity中,重写onCreate或onNewIntent方法,获取回调URI并提取授权信息:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 处理首次启动的回调 Uri callbackUri = getIntent().getData(); if (callbackUri != null) { String authCode = callbackUri.getQueryParameter("code"); // 用授权码换取访问令牌,完成后续授权流程 handleAuthCode(authCode); } } // 应用在后台时,回调会触发此方法 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); Uri callbackUri = intent.getData(); if (callbackUri != null) { String authCode = callbackUri.getQueryParameter("code"); handleAuthCode(authCode); } }
关键注意事项
- URI必须完全一致:Spotify后台填写的重定向URI和AndroidManifest中的data配置要完全匹配,包括大小写、scheme、host,哪怕多一个斜杠都会导致回调失败
- 自定义scheme要独特:用应用包名作为scheme前缀,避免和其他应用的scheme冲突,防止跳转错误
- 测试回调流程:配置完成后,完整走一遍授权流程,确认用户授权后能正确跳回应用并获取到授权码
内容的提问来源于stack exchange,提问作者MOA - CODES
相关产品推荐
相关产品推荐

