我正在尝试注销用户,当我尝试重新登录时,它会使用以前的用户凭据而不输入密码。 当用户在 MSAL swift 中注销时,有什么方法可以清除凭据吗?
let parameters = MSALInteractiveTokenParameters(scopes: kScopes) parameters.promptType = MSALPromptType.login
将标志保留为
.login
,以便它始终要求用户输入凭据。
这只是临时解决方案。
您也可以在 iOS 13 或更低版本中使用此代码。通过更改promptType枚举,我们可以处理WebView中的登录行为。
func acquireTokenInteractively() -> Single<(String, String)> {
return Single<(String, String)>.create { [kScope] observer in
guard let applicationContext = self.applicationContext else {
observer(.error(Errors.unknown))
return Disposables.create()
}
let parameters = MSALInteractiveTokenParameters(scopes: kScope, webviewParameters: MSALWebviewParameters(parentViewController: UIApplication.shared.keyWindow!.rootViewController!))
parameters.promptType = .login //Change it based on ur requirement e.g. .selectAccount, .consent, .promptIfNecessary
applicationContext.acquireToken(with: parameters) { (result, error) in
if let error = error {
NSLoggerSwift.Logger.shared.log(.custom("OutlookLogin"), .error, "\u{274C} Could not acquire token: \(error.localizedDescription)")
observer(.error(Errors.badToken))
}
guard let result = result else {
observer(.error(Errors.badToken))
return
}
observer(.success((result.accessToken, result.account.username ?? "")))
}
return Disposables.create()
}
}
简短的回答:由于所选技术的限制,截至 2019 年 5 月 30 日,在 iOS 上无法执行此操作。
您可以在以下位置阅读更多信息:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/589
并按照以下位置的功能请求进行操作:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/425