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.но это не изменится.