1

我正在尝试将iOSSwift 应用程序连接到 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)
    })
4

1 回答 1

1

我将返回此以提供我最终找到的答案。我没有意识到有不同类型的 oauth2,用于授权整个应用程序的类型称为“客户端凭据”。并非所有库/pod 都是为这种类型的 oauth 设计的。我找到的工作解决方案是p2.OAuth2

于 2016-04-25T18:35:29.937 回答