【问题标题】:Active Campaign API 403 Error using wp_remote_post();使用 wp_remote_post() 的活动活动 API 403 错误;
【发布时间】:2019-11-19 23:45:54
【问题描述】:

我正在创建一个简单的集成,它应该通过 API (V3) 将我们的 WooCommerce 订单发布到 Deep Data 部分

这是我试图提出的请求的一个简单示例。

我暂时手动运行这个脚本只是为了让它工作。这是我使用 wp_remote_post($url, $request)

作为我的请求发送的数组
Array
(
[key] => KEY
[url] => URL/ecomOrders
[settings] => Array
    (
    [method] => POST
    [timeout] => 5
    [redirection] => 5
    [httpversion] => 1.0
    [user-agent] => WordPress/5.2.1; https://www.XXXX.com
    [blocking] => 1
    [body] => {"ecomOrder":{JSONORDER}}
    [headers] => Array
        (
            [Api-Token] => KEY
        )

    )

)

这是我从回复中得到的(部分)内容。

[body] => 
[response] => Array
(
    [code] => 403
    [message] => Forbidden
)

我已经仔细检查了 API 密钥和 URL,只是附带说明一下,我们已经在类似的请求中使用相同的方法和脚本详细信息来添加联系人,这工作正常。

这是我使用的代码(所有 $var 都在脚本前面定义):

$request = array(
        'key' => $key,
        'url' => $url,
        'settings' => array(
            'method' => 'POST',
            'sslverify' => false,
            'timeout'     => 5,
            'redirection' => 0,
            'httpversion' => '1.0',
            'user-agent'  => 'WordPress/' . $wp_version . '; ' . home_url(),
            'blocking'    => true,
            'body'        => $body,
            'headers' => array(
                'Api-Token' => $key,
            )

        )
    );

    $response = wp_remote_post($url, $request);

【问题讨论】:

    标签: php wordpress rest activecampaign


    【解决方案1】:

    我们今天遇到了类似的问题;所有标头和有效负载都设置正确,但 API 返回 401。

    我们的有效负载需要以 json 格式发送,我们必须在标头中明确定义它。像这样:

    'content-type' => 'application/json'   
    

    此外,request/args 数组的结构似乎不是 WordPress 推荐的 in the codex。 (arguements)

    $key = 'myKey';
    $url = 'myURL'
    $body = array('ecomOrder' => $myOrder);
    
    $request = array(
        'method'      => 'POST',
        'sslverify'   => false,
        'timeout'     => 5,
        'redirection' => 0,
        'httpversion' => '1.0',
        'user-agent'  => 'WordPress/' . $wp_version . '; ' . home_url(),
        'blocking'    => true,
        'body'        => json_encode($body),
        'headers'     => array(
            'content-type' => 'application/json',
            'Api-Token'    => $key,
        )
    );
    
    $response = wp_remote_post($url, $request);
    

    由于我不熟悉 Active Campaign 的 API,这可能是在黑暗中拍摄,但希望它有所帮助。

    资源

    这个stackoverflow article 真的很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多