首页 > 解决方案 > 没有 WWW-Authenticate 标头的 Camel Salesforce 身份验证质询

问题描述

我正在尝试使用camel和java向salesforce推送/获取值。当我尝试发送数据时,出现以下错误:

HTTP protocol violation: Authentication challenge without WWW-Authenticate header

奇怪的是,当我使用路由 /data/AccountChangeEvent 订阅数据时,它就像一个魅力

public class MyRouteBuilder extends RouteBuilder {

    @Override
    public void configure() {

    from("salesforce:/data/AccountChangeEvent?replayId=-2")
            .bean(clientService, "accountChange");

        from("direct:updateSalesforce")
                .to("salesforce:createSObject?sObjectName=Account");
    }
}

public class SalesforcePublisherService {

    @Autowired
    CamelContext camelContext;

    public void publishToSalesforce(String endpointUri, Object body) {
        Map<String, Object> values = new HashMap<>();
        // [...] Putting some values
        camelContext.createProducerTemplate().requestBody("direct:updateSalesforce", values);

    }
}

标签: javaapache-camelsalesforce

解决方案


我发现了问题所在。

首先我发现这个错误和写的真的不一样。为了调查这部分,我激活了 Jetty 的日志:

-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog 
-Dorg.eclipse.jetty.LEVEL=DEBUG

然后我在我的邮递员身上重现了这个电话,我从这个 401 错误中得到了消息。经过一番调查,问题与我如何生成刷新令牌有关:

在生成 salesforces 令牌时,我不应该使用范围“refresh_token”(实际上不需要范围)。


推荐阅读