如何提取使用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 

      } 
}];