首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Rest API和JAVA进行Salesforce身份验证

使用Rest API和JAVA进行Salesforce身份验证
EN

Stack Overflow用户
提问于 2016-10-06 19:55:46
回答 3查看 2.2K关注 0票数 1

我想使用带有JAVA的Salesforce Rest API对Salesforce进行身份验证。

为此,我遵循以下URL

http://www.asagarwal.com/2401/step-by-step-guide-to-get-started-with-salesforce-rest-api-using-java

我的java代码如下

代码语言:javascript
运行
复制
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.util.EntityUtils;
import org.apache.http.client.ClientProtocolException;
import org.json.JSONObject;
import org.json.JSONTokener;
import org.json.JSONException;

public class OrderProcessing extends HttpServlet {
    private static final long serialVersionUID = 1L;
    static final String PASS = "XXXXXXX";
    static final String SecurityToken = "XXXXXXXXXXXX";
    static final String USERNAME = "adminuser@.salesforce.com";
    static final String PASSWORD = PASS + SecurityToken;
    static final String LOGINURL = "https://login.salesforce.com";
    static final String GRANTSERVICE = "/services/oauth2/token?grant_type=password";
    static final String CLIENTID = "ConsumerKeyFromSalesfoceConnectedApps";
    static final String CLIENTSECRET = "ConsumerSecretFromSalesforceConnectedApps";

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpClient httpclient = HttpClientBuilder.create().build();
        String loginURL = LOGINURL + GRANTSERVICE + "&client_id=" + CLIENTID + "&client_secret=" + CLIENTSECRET
                + "&username=" + USERNAME + "&password=" + PASSWORD;

        HttpPost httpPost = new HttpPost(loginURL);
        HttpResponse resp = null;

        try {
            resp = httpclient.execute(httpPost);
        } catch (ClientProtocolException cpException) {
            cpException.printStackTrace();
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }

        final int statusCode = resp.getStatusLine().getStatusCode();
        if (statusCode != HttpStatus.SC_OK) {
            System.out.println("Error authenticating to Force.com: " + statusCode);
            return;
        }

        String getResult = null;
        try {
            getResult = EntityUtils.toString(resp.getEntity());
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }

        JSONObject jsonObject = null;
        String loginAccessToken = null;
        String loginInstanceUrl = null;
        try {
            jsonObject = (JSONObject) new JSONTokener(getResult).nextValue();
            loginAccessToken = jsonObject.getString("access_token");
            loginInstanceUrl = jsonObject.getString("instance_url");
        } catch (JSONException jsonException) {
            jsonException.printStackTrace();
        }

        System.out.println(resp.getStatusLine());
        System.out.println("Successful login");
        System.out.println("  instance URL: " + loginInstanceUrl);
        System.out.println("  access token/session ID: " + loginAccessToken);

        httpPost.releaseConnection();
    }
}

返回:HttpResponseProxy{HTTP/1.1 400 Bad Request [Date: Thu, 06 Oct 2016 11:25:26 GMT, Strict-Transport-Security: max-age=10886400; includeSubDomains; preload, Content-Security-Policy-Report-Only: default-src https:; script-src https: 'unsafe-inline' 'unsafe-eval'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /_/ContentDomainCSPNoAuth?type=login, Set-Cookie: BrowserId=bIo6TZOBQRSS2KFKtUR5ZA;Path=/;Domain=.salesforce.com;Expires=Mon, 05-Dec-2016 11:25:26 GMT, Expires: Thu, 01 Jan 1970 00:00:00 GMT, Pragma: no-cache, Cache-Control: no-cache, no-store, X-ReadOnlyMode: false, Content-Type: application/json;charset=UTF-8, Transfer-Encoding: chunked] ResponseEntityProxy{[Content-Type: application/json;charset=UTF-8,Chunked: true]}}

使用Rest Web Service客户端扩展的响应:{"error":"invalid_client_id","error_description":"client identifier invalid"}

请帮助我解决此问题。

EN

回答 3

Stack Overflow用户

发布于 2016-10-07 01:56:35

我使用以下代码解决了我的问题:

代码语言:javascript
运行
复制
String loginURL = LOGINURL + GRANTSERVICE + "&client_id=" + CLIENTID + "&client_secret=" + CLIENTSECRET + "&username=" + USERNAME + "&password=" + PASSWORD;

代替

代码语言:javascript
运行
复制
String loginURL = LOGINURL + GRANTSERVICE + "&client_id=" + CLIENTID + "&client_secret=" + CLIENTSECRET
                + "&username=" + USERNAME + "&password=" + PASSWORD;
票数 2
EN

Stack Overflow用户

发布于 2016-10-06 21:19:46

它以前起作用了吗?如果是,那么您需要再次进行身份验证。

票数 0
EN

Stack Overflow用户

发布于 2016-10-06 21:47:22

一个新的连接应用程序需要大约15分钟才能完成所有设置。由于该错误指示客户端ID不正确,因此我猜这就是问题所在。你能再试一次吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39895345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档