使用zkSForce访问salesforce沙箱

时间:2014-02-20 11:47:39

标签: ios salesforce sandbox

我在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];
    }
}

2 个答案:

答案 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给我提示