com.force.api没有传递access_token获取数据,为什么?

时间:2017-10-24 16:46:02

标签: java salesforce force.com

我使用maven依赖提供的REST API调用salesforce。

<!-- Force REST API -->
<dependency>
    <groupId>com.frejo</groupId>
    <artifactId>force-rest-api</artifactId>
    <version>0.0.39</version>
</dependency>

我已经实现了下面的代码,但是我想知道没有发送access_token我怎么得到结果?难道不安全或者如何实施?使用这个API会很好吗?

public class ForceApiExample {
    public static void main(String[] args) {
        ForceApi api = new ForceApi(new ApiConfig()
                .setUsername("XXX@xy.com")
                .setPassword("XXX")
                .setClientId("XXXXXMB8EGsF3NRtJ0")
                .setClientSecret("XXX"));

        ApiSession session = api.getSession();
        String accessToken = session.getAccessToken();
        System.out.println("ACCESS_TOKEN : "+accessToken);


        List<Map> result = api.query("SELECT name FROM Account").getRecords();
        System.out.println("RESULT : "+result.size());
    }
}

结果如下:

ACCESS_TOKEN : 00D7F0000001I8v!ARgAQB8tHuuquPRL5Z4uj4TBJG0cg0dJYBxy00jPhioEWKI86RlHqgXKSM0DfSTWHYVLl5i9HbbPxjXlgxlUP7XmLKejKrP4
RESULT : 535

1 个答案:

答案 0 :(得分:0)

实际上,Salesforce在发出请求时在内部向客户端提供authentication token。对于REST API,Salesforce使用OAuth 2.0进行身份验证。存在不同种类的OAuth身份验证过程。其中一个是通过用户凭据。当您使用用户凭据发送请求时,您实际上要求Salesforce为您提供访问令牌。获取请求后,Salesforce将验证凭据并重新发送访问令牌。但是这里没有刷新令牌可以使用,因为用户没有直接授权应用程序。

关注Understanding Authentication链接了解详情。