我在这里的智慧结束了,我一直在研究这个问题,而Cannont似乎解决了这个问题。我对编码世界很陌生,所以我确定这是一个新秀错误,但我无法浪费更多的时间,几乎是一个星期。
我在Xcode 8.3,Swift 3中写作。在我粘贴下面的代码之前,我的应用程序会很合适,但这是行不通的。Auth0说我正在误解此代码。
我会收到以下错误:使用未解决的标识符'accessToken'我没有其他错误或红色!我已经尝试移动代码,这是行不通的。我尝试过,否则,如果语句,那是行不通的。我已经花了很多时间麻木的时间谷歌搜索,但我仍然似乎无法掌握我在做错什么。
这是代码:
import UIKit
import Lock
import Auth0
import SimpleKeychain
class HomeViewController: UIViewController {
// MARK: - IBAction
@IBAction func showLoginController(_ sender: UIButton) {
Lock
.classic()
.withOptions {
$0.oidcConformant = true
$0.scope = "openid profile"
}
.onAuth { credentials in
let keychain = A0SimpleKeychain(service: "Auth0")
guard let accessToken = credentials.accessToken else { return }
keychain.setString(accessToken, forKey: "access_token")
self.showSuccessAlert(accessToken)
}
.present(from: self)
Auth0
.authentication()
.userInfo(withAccessToken: accessToken)
.start { result in
switch(result) {
case .sucess(let profile): break
case .failure(let error): break
}
}
Auth0
.webAuth()
.scope("openid profile")
.audience("https://mycompany.auth0.com/userinfo")
.start {
switch $0 {
case .failure(let error):
// Handle the error
print("Error: (error)")
case .success(let credentials):
// Do something with credentials e.g.: save them.
// Auth0 will automatically dismiss the hosted login page
print("Credentials: (credentials)")
}
}
Auth0
.webAuth()
.scope("openid profile offline_access")
.start {
switch $0 {
case .failure(let error):
// Handle the error
print("Error: (error)")
case .success(let credentials):
guard let accessToken = credentials.accessToken, let refreshToken = credentials.refreshToken else { return }
let keychain = A0SimpleKeychain(service: "Auth0")
keychain.setString(accessToken, forKey: "access_token")
keychain.setString(refreshToken, forKey: "refresh_token")
}
}
}
// MARK: - Private
fileprivate func showSuccessAlert(_ accessToken: String) {
let alert = UIAlertController(title: "Success", message: "accessToken: (accessToken)", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
调试Swift代码的策略:
- 彻底调查LLDB调试器以查看发生了什么
- 仔细阅读现有代码(您编写的代码的所有.swift文件)以检查是否有任何拼写错误,等等。
- 打开一个新的Xcode项目,并运行每个.swift文件以查明错误在哪里和/或在您现有的Xcode Project中使用断点
- 启用僵尸
- 代码农药:P
祝您好运!