我在尝试向Salesforce.com发送经过身份验证的GET请求时收到错误(INVALID_SESSION_ID)。
这是完整的插件,它基本上只是将REST响应的主体输出到任何具有[MembershipTables]短代码的页面:
if (!class_exists('WP_Http')) {
include_once(ABSPATH . WPINC . '/class-http.php');
}
// This is obviously the real username
$username = 'xxxx@xxxx.xxx';
// And this is obviously the real password concatonated with the security token
$password = 'xxxxxxxxxxxxxx';
function getMembershipTables() {
$api_url = 'https://na15.salesforce.com/services/apexrest/directory';
$headers = array('Authorization' => 'Basic ' . base64_encode("$username:$password"));
$args = array('headers' => $headers);
$request = new WP_Http;
$result = $request->request($api_url, $args);
$body = $result['body'];
echo "$body";
}
add_shortcode( 'MembershipTables', 'getMembershipTables' );
我应该注意到我可以使用Curl成功命中这个端点,尽管我使用的是一个会话令牌,我从Salesforce使用旧的SOAP API来保持它等效(即没有客户端ID /秘密)。
我是否在使用WP_Http做错了什么?或者我不能使用基本身份验证来验证salesforce.com请求?
感谢。
答案 0 :(得分:0)
salesforce API不支持基本身份验证,您需要使用sessionId调用它。您可以通过各种方法获得sessionId,包括interactive&程序化OAuth2流程,并通过Soap login调用。
答案 1 :(得分:0)
Basis Interactive有类似的问题需要解决。当我参与该项目时,我选择通过预设表单插件和自定义JS Cookie PHP Wordpress插件调用SalesForce CRM。我们通过PHP中的getRequest开发对SalesForce CRM的定制调用,将数据传递给SalesForce CRM,从而轻松解决了这个问题。
正在使用的测试地点:
http://newtest.medullan.com/wp/?page_id=3089
这是代码并回收逻辑查询
下载链接: