OAuthSwift不起作用。我无法获得credential.oauthToken

时间:2019-04-09 05:41:04

标签: swift oauth-2.0 token alamofire

1。总结问题

我正在iPhone应用程序中设置OAuth授权。我想通过OAuth快速获取令牌。起初我无法成功print(credential.oauthToken)

2。提供背景,包括您已经尝试过的内容

通过跳转到Safari,我已经成功打开OAuth页面。也许我已经可以获取令牌了,但是我无法打印令牌并通过oauthToken请求API。

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的官方网站。 有一个通过OAuth2.0授权的Instagram示例。 https://github.com/OAuthSwift/OAuthSwift

  • 我是否需要像code_verifier这样的PKCE代码 和code_challenge
    可能不。我尝试生成PKCE。但它并没有改变。

0 个答案:

没有答案