我尝试将iOS
Swift应用程序连接到API,并且我已尝试使用oauthswift
,aerogear
和heimdallr
。
流程运行正常,但API本身并没有用户拥有的资源。所有用户都可以访问所有资源。但是,API确实需要OAuth2进行身份验证。
有没有办法阻止swift应用程序弹跳到Safari(或Safariwebview)并避免用户登录部分或使用解决方法处理它?我知道这与oauth2有点对立,但是没有必要(实际上这将是一个障碍)让一个用户登录到这个api。
基本上,我希望应用程序在后端登录以访问每个用户。我知道这个api在Ruby,Python和Node中有sdk就是这么做的。那么,我怎么能在Swift中做到这一点?
这是我成功吸引我的oauthswift代码:
let yourEndpoint = ("https://www.awebsite.com/search/shows/a_show")
let oauthswift = OAuth2Swift(
consumerKey: "my key",
consumerSecret: "my secret",
authorizeUrl: "https://www.awebsite.com/oauth/authorize",
accessTokenUrl: "https://www.awebsite.com/oauth/token",
responseType: "token")
let name = "sample_api_proj"
oauthswift.authorizeWithCallbackURL( NSURL(string: "xxx:xxxx:xx:oauth:2.0:xxx")!, scope: "", state: "", success: {
credential, response, parameters in
self.showTokenAlert(name, credential: credential)
let parameters = Dictionary<String, AnyObject>()
oauthswift.client.get("https://www.awebsite.com/api/search/shows/ashow", parameters: parameters,
success: {
data, response in
let jsonDict: AnyObject! = try? NSJSONSerialization.JSONObjectWithData(data, options: [])
print(jsonDict)
}, failure: { error in
print(error)
})
}, failure: { error in
print(error.localizedDescription)
})
答案 0 :(得分:1)
我回到这里提供我最终找到的答案。我没有意识到存在不同的types of oauth2,用于授权整个应用的类型称为客户端凭据。&#39;并非所有的库/ pod都是针对这种类型的oauth而设计的。我找到的工作解决方案是p2.OAuth2。