对讲API CURL获取错误“代码”:“ 400”,“消息”:“必须提供用户电子邮件,user_id或anonymous_id”

时间:2018-10-25 11:17:38

标签: php curl intercom intercom.js

我想通过PHP CURL更新对讲机的custom_attributes。

我将user_id和email作为参数传递仍然收到此错误。 {“ code”:“ 400”,“ message”:“必须提供用户电子邮件,user_id或onymous_id”“}

try {
                $postData = json_encode(array(
                    "user_id" => strval($userDetails["id"]),
                    "email" => $userEmail,
                    "custom_attributes" => ['unsubscribed_from_emails' => 'true']
                ));

                $postHeader = [
                    'Authorization: Bearer <Access Token>',
                    'Accept: application/json',
                    'Content-Type: application/json -d'
                ];

                $curl = curl_init("https://api.intercom.io/users");
                curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, FALSE);
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
                curl_setopt($curl, CURLOPT_HTTPHEADER, $postHeader);
                curl_exec($curl);
                curl_close($curl);
            } catch (Exception $e) {
                error_log($e->getMessage());
            }

1 个答案:

答案 0 :(得分:0)

根据php.net关于CURLOPT_POSTFIELDS的信息:

  

此参数可以作为urlencoded字符串传递,例如   'para1 = val1&para2 = val2&...'或作为字段名称为键的数组   和字段数据作为值。如果value是一个数组,则为Content-Type标头   将设置为multipart / form-data。

http://us2.php.net/manual/en/function.curl-setopt.php

但是您改为传递json。