我正在尝试为iOS应用编写错误处理程序,并希望基于来自Azure AD token 服务(STS)的HTTP错误代码以不同的方式处理错误。例如,如果我收到HTTP 429,则知道不重试该请求,或者如果我收到HTTP 500,则可以选择重试。
如何从ADAL objective-c 中提供的AD错误中提取此信息?
最佳答案
我们不建议您在使用我们的库时直接使用HTTP错误代码。我们提供了ADAL错误代码,您应该使用该错误代码来确定应用程序中的后续步骤。这些封装了HTTP错误和库可能抛出的一个其他错误,这些错误可以被使用到一个NSError对象。
您应该检查错误域中的ADAuthenticationErrorDomain
,然后匹配错误代码(例如AD_ERROR_USER_INPUT_NEEDED
)
我们在SDK的ADErrorCodes.h
头文件中维护此错误代码列表,以及如何发生错误的说明:https://github.com/AzureAD/azure-activedirectory-library-for-objc/blob/dev/ADAL/src/public/ADErrorCodes.h
要在代码中捕获这些错误,请使用以下模式:
[authContext acquireTokenSilentWithResource:...
completionBlock:^(ADAuthenticationResult *result) {
if (!result.error) {
// normal program flow
} else {
if ([result.error.domain isEqual:ADAuthenticationErrorDomain] && result.error.code == AD_ERROR_USER_INPUT_NEEDED) {
// Handle user input needed error
}
else if ([result.error.domain isEqual:ADAuthenticationErrorDomain] && result.error.code == AD_ERROR_SERVER_WRONG_USER) {
// Handle user returned by the server
//does not match the the user identifier error
}
}];
关于http - 如何使用ADAL Objective-C提取从Azure AD发送的HTTP错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44402440/