OAuthSwift не работает. Я не мог получить учетные данные.oauthToken - PullRequest
0 голосов
/ 09 апреля 2019

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

Я настраиваю авторизацию OAuth в приложении для iPhone.Я хочу быстро получить токены от OAuth.Сначала я не смог добиться успеха print(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:    "https://xxxxxx.com/oauth/authorize",
    accessTokenUrl: "https://xxxxxx.com/oauth/token",
    responseType:   "cxxx"
)

и

@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")
        }
        )
}

Мне не удалось print(credential.oauthToken) и print("Sucesess").

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

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

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

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

  • Нужен ли мне код PKCE, например code_verifier и code_challenge?
    Возможно, нет.Я пытался сгенерировать PKCE.но это не изменится.

...