Spotify:使用不接受重定向 url 的 web api 登录
Posted
技术标签:
【中文标题】Spotify:使用不接受重定向 url 的 web api 登录【英文标题】:Spotify: Login using the web api not accepting redirect url 【发布时间】:2016-09-07 16:23:24 【问题描述】:我正在尝试使用 Web API 登录 Spotify,因为我不需要会话对象。在我的授权方法中,我需要传入重定向 url,但是 .GET 请求中不接受 ios 重定向 url 的格式化方式。
func authorize()
// create the url
let url = "https://accounts.spotify.com/authorize"
// parameters
let parameters = ["client_id" : kClientID,
"response_type" : "code",
"redirect_uri" : "spotify-discover-login://callback",
"state" : kState,
"scope" : kScopes]
// response code
var responseCode = 401
Alamofire.request(.GET, url, parameters: parameters, headers: nil)
.responseStringresponse in
print(response)
switch response.result
case .Success:
if let response = response.response
responseCode = response.statusCode
case .Failure:
print("fail")
return
switch responseCode
case 200:
print("200")
case 202:
print("@ACCEPTED")
case 400:
print("@BAD REQUEST")
case 401:
print("@AUTH FAIL")
case 403:
print("@FORBIDDEN")
case 1004:
print("@COULD NOT CONNECT")
default: break
更新:
这是 Xcode 给我的错误:
失败:错误域=NSURLErrorDomain 代码=-1002“不支持的 URL” UserInfo=NSUnderlyingError=0x7fc89b4677a0 错误 域=kCFErrorDomainCFNetwork 代码=-1002 "(null)", NSErrorFailingURLStringKey = Spotify的,发现登录://回调/码= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA&状态=随机字符串的状态, NSErrorFailingURLKey = Spotify的,发现登录://回调/码= AQDKy5g8QOVodDd0kTEmqG-MXKdPmKiPzzSUSfZAY_Nh0J_SW8LYl7s583Pe6mu1kJcHA6Hyudpwhu-FkBXagvFE_Vh8ZVXsSP8sMZvJTikPkdJeV57vgJaL9f6K9QMLfGbIb1XuhqadLP30SGejyDoLGgVoLVtrW_ryWK4KQRwvQKNiitAW9kBDYry6A70i6R7aosFKOQrhswYxhH3Lre0ieBnCt0HrLozp3qQvnk36NKY2Ur2OdI92JOaf4Gk3UmLbrIyjcvUzdeK21tk-bkog9em0x3jJBKgeSAmiFz05ioehlboD9D79uvKPFfnA3hkvfBNFN5dvegiBcRfik7mNebckD2WRABqPyid5Xw8zt092sheCwhuxQDh13-LxGC4WfTlA5ydNrZlwQA5_5JcMQvgZZOA&状态=随机字符串的状态, NSLocalizedDescription=不支持的网址
【问题讨论】:
您能否提供更多关于它在 GET 请求中未被接受的信息?您是从服务器收到响应还是整个 API 请求都失败了?如果有,请发布完整的错误消息。 @ChristopherWhidden 我用 Xcode 给我的错误更新了问题。 【参考方案1】:在NSURLErrorDomain
代码-1002指向一个NSURLErrorUnsupportedURL
错误。根据Apple,这错误的手段:
NSURLErrorUnsupportedURL P>
时返回一个适当地形成URL不能由框架处理。 P>
最可能的原因是,存在用于URL没有可用的协议处理程序。 P>
可用在IOS 2.0和更新版本。 P>
据NSHipster,这错误的手段:
“由于未能不受支持的URL方案的连接。” P>
所以,适当地形成你的网址,但有一个知道如何处理“的Spotify,发现登录”协议做任何协议处理程序。 P>
但是,当然,这是你的自定义URL方案。确保你已经正确注册您的自定义URL方案在您的info.plist和实施
application:openURL:options:
。看到这个tutorial。
作为一个方面说明,您的自定义URL方案的名称是相当通用的。另一个应用程序或Spotify应用本身可能使用相同的方案无论是现在还是将来,这可能在调试创造头疼的你。确保创建方案独特,最有可能包括你的应用程序或您的公司在方案的名称,如“PoKoBros,Spotify的,发现登录”。 P>
【讨论】:
【参考方案2】:当您不在 info.plist 文件中创建 this 时也会发生这种情况:
解决此问题的步骤:
转到 Project Navigato 并搜索info.plist
文件
添加了一个名为NSAppTransportSecurity
的密钥作为Dictionary
。
添加了一个名为NSAllowsArbitraryLoads
的子键为Boolean
并设置
其值为YES
最后你必须拥有:
【讨论】:
【参考方案3】:您可以在此处阅读适用于 iOS 开发人员的 API 文档: https://developer.spotify.com/technologies/spotify-ios-sdk/tutorial/
或者在这里为 Web API 开发人员: https://developer.spotify.com/web-api/get-users-profile/
【讨论】:
以上是关于Spotify:使用不接受重定向 url 的 web api 登录的主要内容,如果未能解决你的问题,请参考以下文章