我正在尝试将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)
})