如何提取使用ADAL从Azure AD发送的HTTP错误代码Objective-C
问题描述:
我想为iOS应用程序编写错误处理程序,并且想要根据来自Azure AD令牌服务的HTTP错误代码以不同方式处理错误(STS)。例如,如果我得到一个HTTP 429,我知道不要重试请求,或者如果我得到一个HTTP 500,我可能会选择重试。如何提取使用ADAL从Azure AD发送的HTTP错误代码Objective-C
如何从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
}
}];