2016-03-10 1 views
0

Я использую SDK Salesfroce как для своего родного приложения для iOS, так и для Android-приложения. Я пытаюсь осветить сценарий, в котором пользователь теряет сессию, и я хочу снова войти в него, не переходя снова в экран входа в систему.Salesforce SDK от android - Как обновить сеанс?

Я нашел правильное решение в прошивкой:

SFAuthenticationManager.sharedManager().loginWithCompletion({ (authInfo : SFOAuthInfo!) -> Void in 
     print("successfuly re-authenticated") 
     if (!NSThread.currentThread().isMainThread) { 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       self.loadLoggedInWebView() 
      }) 
     } 
     else { 
      self.loadLoggedInWebView() 
     } 
    }) { (authInfo : SFOAuthInfo!, error: NSError!) -> Void in 
     print("re-authenticated failed") 
} 

К сожалению, я не смог найти альтернативу для Android коды. Каков правильный способ сделать это в Android? Спасибо.

ответ

1

Это то, что я получил от Salesforce SDK.

SalesforceSDK OAuth2.java вызов одного из этих методов с требуемыми параметрами

public static TokenEndpointResponse refreshAuthToken(
      HttpAccess httpAccessor, URI loginServer, String clientId, 
      String refreshToken) {....} 
//AND 

public static TokenEndpointResponse refreshAuthToken(
      HttpAccess httpAccessor, URI loginServer, String clientId, 
      String refreshToken, String clientSecret) {......} 

и результат TokenEndpointResponse.authToken ваш новый маркер аутентификации.
Важная: Если вышеуказанный вызов бросает OAuthFailedException означает обновление маркера не является действительным (отозвана)

Happy_Coding;

+0

Спасибо. Хотя я должен делать с authToken? Другими словами - что я обновляю в SDK Salesforce? – EladB

+0

Получение нового токена авторизации означает обновление вашей сессии .. с помощью этой новой веб-службы токена не будет вызывать AuthError, то есть код состояния 401. – Bharatesh

+0

Хорошо. поток теперь кажется ясным. Теперь я понимаю, что это SalesforceSDKManager.getInstance(). GetUserAccountManager(). GetCurrentUser(). GetRefreshToken(); И я получаю «null». Что может привести к отзыву токена обновления? – EladB