OAuthSwift (1) подключение

Я пытаюсь создать клиент (в частном модуле) для подключения к API garmin (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
}

Итак, эта часть кода открывает страницу подключения garmin в сафари, я использую свою учетную запись mail/pwd для подключения и все. Обратный вызов никогда не завершается успешно или никогда не завершается ошибкой. Поэтому я не могу получить доступ к своим учетным данным. Это похоже на авторизацию (withCallBackURL...), не ждите обратного вызова и никогда не получайте информацию в URL-адресе (например, oauth-idenfitifier).

Я не понимаю, почему, если у вас есть идея, спасибо.


person Makaille    schedule 20.01.2017    source источник
comment
У меня проблема с подключением к Garmin. Где и как вы добавили метод подписи и метку времени?   -  person abhi    schedule 20.02.2017
comment
@abhi Вы используете OAuthSwift?   -  person Makaille    schedule 21.02.2017
comment
Да, Макайл. У меня есть код, аналогичный вашему, который вы упомянули выше. Но не могу подключиться к Garmin. Не могли бы вы поделиться своим кодом.   -  person abhi    schedule 21.02.2017
comment
TimeStamp и метод подписи устанавливаются клиентом ouathswift. Убедитесь, что вы правильно настроили весь клиент (appDelegate и целевую сборку). Я больше не использую это, я не могу поделиться с вами кодом   -  person Makaille    schedule 21.02.2017


Ответы (1)


Я делюсь своим кодом, который работает для меня

    // 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)
    })
person Waqas Haider Sheikh    schedule 01.06.2018
comment
У вас есть пример проекта с авторизацией Garmin и API? Пожалуйста, дай мне знать. Спасибо. - person Jamshed Alam; 18.07.2018
comment
Я получаю (ошибка OAuthSwiftError -10.), выполнив следующие действия. Есть идеи по этому поводу? - person iOS_MIB; 28.02.2020