微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试获取最近的曲目时,Apple Music API 收到 403 'Forbidden'

如何解决尝试获取最近的曲目时,Apple Music API 收到 403 'Forbidden'

嘿,伟大世界的人们!

我正在尝试使用以下 HTTP 请求从 Apple Music API 检索所有最近的曲目: static let AMRecentTracks = "https://api.music.apple.com/v1/me/recent/played/tracks"

可耻的是,我一直收到错误 403 forbidden。这是没有意义的,因为我能够使用这个成功地做一个搜索请求: static let AMMusicURL = "https://api.music.apple.com/v1/catalog/"

任何帮助将不胜感激。似乎关于这个特定案例的信息很少。我查过了。

我正在使用不记名和令牌发出请求。 static let prefix = "Bearer " 我在其中附加了 developer token

下面是我的代码

func fetchRecentPlayedResources(_ complition: @escaping (Result<[Song],Error>)->Void) {
    let suffix = "?types=songs"
    
    guard let searchURL     = URL(string: Request.AMRecentTracks + suffix) else { return }
    var musicRequest        = URLRequest(url: searchURL)
    musicRequest.httpMethod = HTTPRequest.GET
    musicRequest.addValue(HTTPRequest.prefix + self.developerToken,forHTTPHeaderField: HTTPRequest.authorization)
    
    
    URLSession.shared.dataTask(with: musicRequest) { [weak self] (data,response,error) in
        guard let self = self else { return }
        if let error = error {
            complition(.failure(error))
        } else {
            if let data = data {
                self.parseSongs(with: data) { songs in
                    complition(.success(songs))
                }
            }
        }
    }.resume()
}

解决方法

发送个性化请求时需要添加两个令牌,iTunes API 文档中的示例显示了这一点:

curl -v -H 'Music-User-Token: [music user token]' -H 'Authorization: Bearer [developer token]' "https://api.music.apple.com/v1/catalog/us/songs/203709340"

因此,可能仅添加开发者令牌作为授权是不够的,这就是您收到 403 错误的原因。同样,正如文档所述 - 这是由于授权无效或不足造成的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。