无法在Wordpress插件中验证Salesforce

时间:2013-04-30 18:35:24

标签: wordpress authentication salesforce

我在尝试向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请求?

感谢。

2 个答案:

答案 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

这是代码并回收逻辑查询

下载链接:

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