我在iOS应用程序中使用 zkSForce 登录SalesForce。现在,我需要在沙箱环境中为同一个应用程序访问相同的数据。
但是当我尝试登录时,我收到以下错误。
错误域= APIError代码= 0“操作无法完成。(APIError错误0)。”UserInfo = 0xad3ef20
{faultstring=INVALID_LOGIN: Invalid username, password, security token; or user locked out., faultcode=INVALID_LOGIN}
但是当我尝试连接到生产环境时,我能够成功登录。是否有任何特定的说明可以使用 zkSForce 连接到Sandbox?提前谢谢。
- 编辑 -
我使用以下方法登录。
[SFAccountManager setLoginHost:@"test.salesforce.com"];
[SFAccountManager setClientId:CLIENTID];
[SFAccountManager setRedirectUri:REDIRECTURI];
[SFAccountManager setCurrentAccountIdentifier:USERNAME];
[SFAccountManager sharedInstance].coordinator.credentials.instanceUrl=[NSURL URLWithString:@"https://test.salesfoce.com"];
[[FDCServerSwitchboard switchboard] loginWithUsername:username password:passwordToken target:self selector:@selector(loginResult:error:)];
,结果由以下方法处理
- (void)loginResult:(ZKLoginResult *)result error:(NSError *)error{
if (result && !error){
[[SFAccountManager sharedInstance].coordinator.credentials setAccessToken:nil];
[SFAccountManager sharedInstance].coordinator.credentials.accessToken = result.sessionId;
}
else if (error){
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Login failed" message:@"Error" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[myAlertView show];
}
}
答案 0 :(得分:1)
Sandbox的登录请求需要转到与生产的默认端点不同的端点,因此您需要在调用login之前在客户端对象上调用setLoginProtocolAndHost:,例如。
ZKSforceClient *c = [[ZKSforceClient alloc] init];
[c setLoginProtocolAndHost:@"https://test.salesforce.com"];
[c login:self.username password:self.password];
...
答案 1 :(得分:1)
我不确定这是否是完美的解决方案,但添加以下内容对我有效。
[[FDCServerSwitchboard switchboard] setApiUrlFromOAuthInstanceUrl:LOGINHOSTURL];
其中LOGINHOSTURL是您的主机网址。
感谢@superfell给我提示