Как я могу получить токены в OAuth-авторизации в swift?Почему я не могу напечатать «credential.oauthToken»? - PullRequest
0 голосов
/ 02 апреля 2019

1.Подведите итог проблемы

Я настраиваю авторизацию OAuth в приложении для iPhone.Я хочу быстро получить токены от OAuth.Сначала я не смог распечатать (credential.oauthToken).

2.Предоставьте справочную информацию, включая то, что вы уже пробовали

Я уже успешно открыл страницу OAuth, перейдя в Safari.Возможно, я уже смог получить токен, но мне не удалось распечатать токен и запросить API по oauthToken.

3.Показать код

import UIKit
import OAuthSwift
import Alamofire
import SwiftyJSON
import KeychainAccess

.. ..

let oauthswift = OAuth2Swift(
    consumerKey:    "8xxxxxxxxxxxxxxxxxxx",
    consumerSecret: "7xxxxxxxxxxxxxxxxxxx",
    authorizeUrl:    "http://xxxxxx.com/oauth/authorize",
    accessTokenUrl: "http://xxxxxx.com/oauth/token",
    responseType:   "cxxxxx"
)

и

    @IBAction func onTappedSyncButton(_ sender: UIButton) {

    let keychain = Keychain(service: "myappname-token")
    oauthswift.accessTokenBasicAuthentification = true

    let handle = oauthswift.authorize(
        withCallbackURL: URL(string: "my-xxxxxx-app://samplesite")!,
            scope: "default", 
            state:"",
            success: { credential, response, parameters in
                // <<<<<<<<I can't get credential.oauthToken. why??<<<<<<
                print(credential.oauthToken)
                print("Sucesess")

                // I save a token by keychainAccess frameworks
                keychain["oauthToken"] = credential.oauthToken
        },
            failure: { error in
                print(error.localizedDescription)
                print("Failed")
        }
        )
}

Я не смог распечатать (credential.oauthToken) и распечатать ("Sucesess").

4.Опишите ожидаемые и фактические результаты

  • Нужно ли мне указывать состояние: ""?
    Возможно, нет.нам не нужно состояние каждый раз.

  • Я ошибаюсь, сохраняя в связку ключей?
    Возможно, нет.Если я введу брелок, как показано ниже.Я могу успешно распечатать и сохранить в keycahin.

    do {
        try keychain.set("01234567", key: "oauthToken")
    } catch {
        print("aa")
    }
    
  • Я ошибаюсь в коде oauthswift?
    Возможно, нет.Я имею в виду официальный сайт oauthswift.Есть пример для Instagram от Authorize с OAuth2.0.https://github.com/OAuthSwift/OAuthSwift

...