Salesforce MobileSDK:未为此组织启用Rest API

时间:2016-10-03 10:02:57

标签: android salesforce

我正在尝试将Salesforce Mobile SDK用于原生Android。 要求:

  
      
  1. 允许任何拥有Salesforce帐户的用户登录
  2.   
  3. 获取他/她的联系人列表
  4.   
  5. 获取特定的联系方式
  6.   

如果这些不属于移动SDK,请与我们联系。

我关注https://github.com/forcedotcom/SalesforceMobileSDK-Android

  
      
  1. 克隆它
  2.   
  3. 已安装NPM并安装了所需的子模块
  4.   
  5. 使用原生的forceroid
  6. 创建了一个新的Android应用程序   
  7. 使用我已连接的应用的值更改了bootconfig.xml值。
  8.   

它记录正常,但当我尝试获取联系人时,它说:

  

未为此组织启用Rest API

enter image description here

登录响应似乎没问题。客户端对象json凭证:

{
  "clientId": "*******",
  "loginUrl": "https://login.salesforce.com",
  "identityUrl": "https://login.salesforce.com/id/99VVHJHGF5688/00548000003yOKeAAM",
  "instanceUrl": "https://ap2.salesforce.com",
  "userId": "**********",
  "orgId": "*********",
  "communityUrl": null,
  "refreshToken": "*************",
  "accessToken": "************",
  "communityId": null,
  "userAgent": "SalesforceMobileSDK/4.3.0 android mobile/7.0 (Nexus 6P) SFTest/1.0 Native uid_32aea9bdde1b8b7e"
}

编辑1:获取联系人列表的代码:

public void onFetchContactsClick(View v) throws UnsupportedEncodingException {
    sendRequest("SELECT Name FROM Contact");
}

private void sendRequest(String soql) throws UnsupportedEncodingException {
    RestRequest restRequest = RestRequest.getRequestForQuery(ApiVersionStrings.getVersionNumber(this), soql);

    client.sendAsync(restRequest, new AsyncRequestCallback() {
        @Override
        public void onSuccess(RestRequest request, final RestResponse result) {
            result.consumeQuietly(); // consume before going back to main thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    try {
                        listAdapter.clear();
                        JSONArray records = result.asJSONObject().getJSONArray("records");
                        for (int i = 0; i < records.length(); i++) {
                            listAdapter.add(records.getJSONObject(i).getString("Name"));
                        }
                    } catch (Exception e) {
                        onError(e);
                    }
                }
            });
        }

        @Override
        public void onError(final Exception exception) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this,
                            MainActivity.this.getString(SalesforceSDKManager.getInstance().getSalesforceR().stringGenericError(), exception.toString()),
                            Toast.LENGTH_LONG).show();
                }
            });
        }
    });
}

编辑2:更多调查结果:

  

我认为这与我的帐户/已连接的应用设置有关。因为   当我使用https://developer.salesforce.com/signup进行signedup并使用时   username它工作正常。如果我使用email代替,请再次使用   它显示未启用API的相同错误。我创造了多个   username使用相同的email和注册表单,它们都有效   很好,但不是电子邮件。

     

BTW我目前正在使用salesforce的试用版。

1 个答案:

答案 0 :(得分:1)

常规试用帐户适用于专业版,它不包含API访问权限,这是您获得的错误。您需要使用具有API访问权限的帐户,例如免费的开发人员版帐户或企业版帐户。