Salesforce Native IOS SDK 无法刷新访问令牌

Salesforce Native IOS SDK can't refresh access token

我目前正在使用 Salesforce.com IOS SDK 版本 3.0 构建连接到 salesforce 的本机应用程序。此应用程序将用于外部用户,因此它指向社区。

我首先创建了一个本机 IOS SDK 应用程序并让它运行并与销售人员交谈。

然后我创建了一个新社区,创建了一个社区用户,为他们提供了适当的权限并完成了社区设置。

接下来我进入 Xcode 项目,在应用程序 plist 的支持文件下。然后我编辑了 SFDCOAuthLoginHost 以设置为社区 URL。

完成后,我重新启动了应用程序,并能够通过本机 SDK 登录社区,一切正常,直到应用程序达到其会话超时。此时我收到这些错误。

ERROR|SFNetworkOperation|callDelegateDidFailWithError Session expired or invalid
ERROR|SFNetworkOperation|Session timeout encountered. Requeue  0.000000or retry later
ERROR|SFNetworkEngine|Ignore session timeout error callback as host URL changed, request URL is https://dev-patientsupport-dev.cs21.force.com/dev/services/apexrest/patientNotifications, login host is [cs21.salesforce.com]

当然,因为它无法获得新会话,所有网络标注在此之后都会失败。

我找遍了所有地方都没有找到解决这个问题的方法。我的猜测是,因为请求是向社区 URL 发出的,但刷新的会话是从 cs21.salesforce.com 发送的,所以它被忽略了。再次感谢大家的时间。

看起来这可能是由于刷新令牌在使用社区时将其实例URL 设置为错误的目标所致。这可能是 SDK 中的错误,因为它在网络上运行良好。尝试将凭据的实例 URL 更改为与社区的 URL 相同,看看是否有帮助。

此错误的修复已作为 Mobile SDK 3.1.1 补丁的一部分提交给 GitHub、npm (forceios) 和 Cocoapods。请参阅 https://plus.google.com/105428096535342044035/posts/AkoVwL5Kdt3 了解更多详情。