Интерком API CURL Получение ошибки «code»: «400», «message»: «Должен быть указан адрес электронной почты пользователя, user_id или anonymous_id» - PullRequest
0 голосов
/ 25 октября 2018

Я хочу обновить custom_attributes внутренней связи через PHP CURL.

Я передаю user_id и email как параметр, все еще получая эту ошибку.{"code": "400", "message": "Необходимо указать адрес электронной почты пользователя, user_id или anonymous_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 голосов
/ 25 октября 2018

В соответствии с php.net о CURLOPT_POSTFIELDS:

Этот параметр может быть передан в виде строки с кодированием в формате url, например 'para1 = val1¶2 = val2 & ...', или в виде массива симя поля в качестве ключа и данные поля в качестве значения.Если значение является массивом, заголовок Content-Type будет установлен на multipart / form-data.

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

Но вместо этого вы передаете json.

...