【问题标题】:Need help fetching salesforce data of multiple organizations using java需要帮助使用 java 获取多个组织的销售人员数据
【发布时间】:2016-05-09 06:25:08
【问题描述】:

我正在尝试集成一个用 java 编写的软件,以便能够从多个组织的 Salesforce 站点获取一些数据。

我是 Salesforce 的新手,这就是我目前所做的。我在我的开发人员 Salesforce 帐户中创建了一个连接的应用程序,并根据博客中可用的内容编写了这段代码:

    private static final String CLIENT_ID = "my-connected-app-client-id";
    private static final String CLIENT_SECRET = "my-connected-app-client-secret";
    private static final String REDIRECT_URI = "https://localhost:8443/callback";
    private static final String ENVIRONMENT = "https://login.salesforce.com";
    private static String tokenUrl = null;
    private static final String username = "my-developer-sf-login";
    private static final String password = "my-developer-sf-password";
    private String accessToken = null;
    private String instanceUrl = null;


    private List<BasicNameValuePair> getParams(){
        ArrayList<BasicNameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("grant_type", "password"));
        params.add(new BasicNameValuePair("client_id", CLIENT_ID));
        params.add(new BasicNameValuePair("client_secret", CLIENT_SECRET));
        params.add(new BasicNameValuePair("redirect_uri", REDIRECT_URI));
        params.add(new BasicNameValuePair("username", username));
        params.add(new BasicNameValuePair("password", password));
        return params;
    }

    @Override
    public boolean connect() throws ConnectException {

        System.out.println("Getting a token");
        tokenUrl = ENVIRONMENT + "/services/oauth2/token";
        HttpClient httpclient = HttpClientBuilder.create().build();
        HttpPost post = new HttpPost(tokenUrl);
        try {
            post.setEntity(new UrlEncodedFormEntity(getParams(), "UTF-8"));
            HttpResponse response = httpclient.execute(post);
            String responseStr = EntityUtils.toString(response.getEntity());
            HashMap loginResponse = new ObjectMapper().readValue(responseStr, HashMap.class);
            accessToken = loginResponse.get("access_token").toString();
            instanceUrl = loginResponse.get("instance_url").toString();
            System.out.println("We have an access token: " + accessToken + "\n" + "Using instance " + instanceUrl + "\n\n");
            return accessToken != null && instanceUrl != null;
        } catch (ClientProtocolException e) {
            throw new ConnectException("Unable to connect to salesforce", e);
        } catch (IOException e) {
            throw new ConnectException("Unable to connect to salesforce", e);
        } finally {
            post.releaseConnection();
        }
    }

通过在上述程序中获得访问令牌,我可以访问 REST 端点并使用 SOSQL 查询 API 获取一些帐户详细信息 json。

但是,我有一些非常基本的问题。由于我在自己连接的应用程序中提供了我的开发人员 Salesforce 帐户的用户名和密码,这种方法是否适用于从其他组织的 Salesforce 帐户中获取?他们是否必须向我的应用程序提供他们的用户名/密码信息?组织的 Salesforce 应用程序中是否有某种配置可以连接到我新创建的应用程序?

【问题讨论】:

    标签: java salesforce


    【解决方案1】:

    为了回答你的问题,让我问你一件事。如果你在谷歌上有自己的帐户,并且你创建了一个应用程序来使用 OAUTH 2.0 登录,那么你认为你可以登录到谷歌帐户吗其他用户的。?我相信没有。除非您获得管理员访问权限,否则您无法登录。相反,您可以要求用户输入他们的用户名和密码以及隐私政策。 希望这可以帮助你.. 谢谢

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多