【发布时间】:2013-10-08 16:14:09
【问题描述】:
例如在以下位置发出 HTTP GET: https://api.deezer.com/track/3980888?access_token=xxx 其中 access_token 是有效的 Premium+ 令牌。响应不包括流字段。但是,如果(例如)使用来自 Deezer Android SDK 的 DeezerConnect 和 DeezerRequest,则包含它。
【问题讨论】:
例如在以下位置发出 HTTP GET: https://api.deezer.com/track/3980888?access_token=xxx 其中 access_token 是有效的 Premium+ 令牌。响应不包括流字段。但是,如果(例如)使用来自 Deezer Android SDK 的 DeezerConnect 和 DeezerRequest,则包含它。
【问题讨论】:
要在 API 响应中获取有效的流,您需要提供 access_token 和 imei 参数。
此imei 参数随后用于解码流并播放曲目。不幸的是,并不是所有的 Android 设备都有一个 IMEI 号码,所以 Deezer SDK 使用它自己的方式来生成这个值。
这就是为什么您确实应该使用 DeezerConnect / DeezerRequest 系统来调用 API,以确保您获得正确的 Stream。
【讨论】:
Util.getImei 是否有机会在未来的 SDK 版本中公开?我目前正在使用反射从您的DeezerConnect 实例中读取内部imei 字段,但这显然是一个非常脆弱的黑客攻击。 PS:我使用 vanilla HTTP 的原因是该应用程序已经在使用 github.com/koush/ion 进行 REST、图像加载、WebSocket 等,因为它与 Android UI 线程很好地集成,同时使用 NIO 执行非阻塞 I/O来自后台线程(具有 HTTP 流水线支持和其他好东西)。