2017-06-07 68 views
0

我想爲iOS應用程序編寫錯誤處理程序,並且想要根據來自Azure AD令牌服務的HTTP錯誤代碼以不同方式處理錯誤(STS)。例如,如果我得到一個HTTP 429,我知道不要重試請求,或者如果我得到一個HTTP 500,我可能會選擇重試。如何提取使用ADAL從Azure AD發送的HTTP錯誤代碼Objective-C

如何從ADAL Objective C提供的AD錯誤中提取此信息?

回答

1

我們不建議您在使用我們的庫時直接使用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 

      } 
}];