OAuthSwift(1)连接

时间:2017-01-20 16:28:17

标签: ios swift oauth oauth-1.0a

我正在尝试创建一个客户端(在私有广告连接中)以连接到garmin API(OAuth1),并且我遇到了一些问题。我使用OAuthSwift和OAuthSwiftAlamofire

首先,我试图获得所有授权,

let oauthswift = OAuth1Swift(
        consumerKey:    "*****************",
        consumerSecret: "****************",
        requestTokenUrl: "http://connectapitest.garmin.com/oauth-service-1.0/oauth/request_token",
        authorizeUrl:    "http://connecttest.garmin.com/oauthConfirm",
        accessTokenUrl:  "http://connectapitest.garmin.com/oauth-service-1.0/oauth/access_token"
    )

oauthswift.authorizeURLHandler = SafariURLHandler(viewController: self, oauthSwift: oauthswift)

let _ = oauthswift.authorize(
        withCallbackURL: URL(string: "https://www.****.co/api/v2/garminCallback")!,
        success: { credential, response, parameters in
            print("Success")
            print(credential.oauthToken)
            print(credential.oauthTokenSecret)
            print(credential.oauthVerifier)
    },
        failure: { error in
            print("Error")
            print(error.localizedDescription)
    })

的AppDelegate

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    if (url.host == "oauth-callback") {
        OAuthSwift.handle(url: url)
    }
    return true
}

所以,这部分代码在safari中打开了garmin的连接页面,我用我的帐号mail / pwd进行连接,这就是全部。回调永远不会成功,或永远不会失败。所以我无法访问我的凭据。就像授权(withCallBackURL ......)一样,不要等待callBack,也不要在URL中获取信息(如oauth-idenfitifier)。

我不明白为什么,如果你有一个想法,谢谢。

1 个答案:

答案 0 :(得分:0)

我正在分享我的代码,这对我有用

    // create an instance of oAuth and retain it
    let oauthSwift =  OAuth1Swift(
        consumerKey:    "*******",
        consumerSecret: "*******",
        requestTokenUrl: "https://connectapi.garmin.com/oauth-service/oauth/request_token",
        authorizeUrl: "https://connect.garmin.com/oauthConfirm",
        accessTokenUrl: "https://connectapi.garmin.com/oauth-service/oauth/access_token"
    )

    // add safari as authorized URL Handler
    oauthSwift.authorizeURLHandler = SafariURLHandler(viewController: self, oauthSwift: oauthSwift)

    // set redirection URL
    guard let redirectURL = URL(string: "oauth-swift://garmin-callback") else { return }

    // add callback url to authorized url
    oauthSwift.addCallbackURLToAuthorizeURL = true
      // authorized the request
    oauthSwift.authorize(withCallbackURL: redirectURL, success: { (credentials, response, parameters) in
        print(response)
    }, failure: { (error) in
        print(error)
    })