0

我在尝试向 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 请求进行身份验证?

谢谢。

4

2 回答 2

0

Basis Interactive 也有类似的问题需要解决。当我从事该项目时,我选择通过预设表单插件和自定义 JS Cookie PHP Wordpress 插件调用 SalesForce CRM。我们通过在 PHP 中通过 getRequest 将数据传递给 SalesForce CRM 来开发对 SalesForce CRM 的自定义调用,从而轻松解决了这个问题。

使用中的测试站点:

http://newtest.medullan.com/wp/?page_id=3089

这是代码并回收逻辑查询

下载链接:

http://basisinteractive.net/webdesign.html#wordpress

于 2013-12-19T06:19:04.023 回答
0

Salesforce API 不支持基本身份验证,您需要使用 sessionId 调用它。您可以通过各种方法获取 sessionId,包括交互式和编程OAuth2流,以及通过Soap 登录调用。

于 2013-04-30T20:34:48.423 回答