拦截oauth2回调

时间:2016-01-24 18:13:55

标签: ios swift oauth2

我尝试将iOS Swift应用程序连接到API,并且我已尝试使用oauthswiftaerogearheimdallr

流程运行正常,但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)
    })

1 个答案:

答案 0 :(得分:1)

我回到这里提供我最终找到的答案。我没有意识到存在不同的types of oauth2,用于授权整个应用的类型称为客户端凭据。&#39;并非所有的库/ pod都是针对这种类型的oauth而设计的。我找到的工作解决方案是p2.OAuth2