【问题标题】:Salesforce SDK from android - How can I refresh my session?来自 android 的 Salesforce SDK - 如何刷新我的会话?
【发布时间】:2016-03-10 11:53:21
【问题描述】:

我在我的原生 iOS 应用和 Android 应用上都使用了 Salesfroce SDK。 我试图涵盖用户失去会话并且我想重新登录他而无需再次通过登录屏幕的情况。

我在 iOS 中找到了合适的解决方案:

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中这样做的正确方法是什么? 谢谢。

【问题讨论】:

    标签: android session salesforce salesforce-ios-sdk


    【解决方案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 表示刷新令牌无效(已撤销)

    【讨论】:

    • 谢谢。虽然我应该使用 authToken 吗?换句话说 - 我要在 Salesforce SDK 中更新什么?
    • 获取新的身份验证令牌意味着刷新您的会话。使用这个新令牌网络服务不会抛出 AuthError 即 401 状态代码..
    • 好的。现在看来,流程很清晰。我现在明白了这个 SalesforceSDKManager.getInstance().getUserAccountManager().getCurrentUser().getRefreshToken();我得到“空”。什么可能导致我的刷新令牌被撤销?
    • @Mahi 我不擅长 iOS。但你可以在这里挖github.com/forcedotcom/SalesforceMobileSDK-iOS/tree/master/libs/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2011-07-30
    相关资源
    最近更新 更多