如何使用 ADAL Objective-C 提取从 Azure AD 发送的 HTTP 错误代码
How do I extract the HTTP error code sent from Azure AD using ADAL Objective-C
我正在尝试为 iOS 应用程序编写错误处理程序,并希望根据来自 Azure AD 令牌服务 (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
}
}];
我正在尝试为 iOS 应用程序编写错误处理程序,并希望根据来自 Azure AD 令牌服务 (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
}
}];