2015-10-06 16 views
6

Tôi gặp sự cố khi tạo thành viên mới trong danh sách bằng API v3. Tôi gửi bài yêu cầu với dữ liệu json:Tạo lỗi xác thực người đăng ký mới bằng cách sử dụng API MailChimp v3.0

url:

https://us10.api.mailchimp.com/3.0/lists/<list-id>/members 

tiêu đề:

Content-type: application/json 
    Authorization: apikey <my-api-key> 

Json cơ thể:

{ 
    "status": "pending", 
    "email_address": "[email protected]", 
    "merge_fields": { 
    "FNAME": "John", 
    "LNAME": "Smith", 
    "REFERRER": "referrer", 
    "REFERRAL": "referral" 
    } 
} 

Nó dựa trên tài liệu api và hướng dẫn https://teamtreehouse.com/library/mailchimp-api/mailchimp-api/adding-new-members-to-your-list . Nhưng mọi câu trả lời đều giống như:

{ 
    "type": "http://kb.mailchimp.com/api/error-docs/400-invalid-resource", 
    "title": "Invalid Resource", 
    "status": 400, 
    "detail": "Your merge fields were invalid.", 
    "instance": "", 
    "errors": [ 
    { 
     "field": "FNAME", 
     "message": "Please enter a value" 
    }, 
    { 
     "field": "LNAME", 
     "message": "Please enter a value" 
    }, 
    { 
     "field": "REFERRAL", 
     "message": "Please enter a value" 
    }, 
    { 
     "field": "REFERRER", 
     "message": "Please enter a value" 
    } 
    ] 
} 

Tôi đang làm gì sai? Có phải là vấn đề với API MailChimp không?

+0

Tôi đã thử JSON của bạn trong sân chơi MailChimp và ít nhất nó có vẻ hoạt động trong đó https://us5.api.mailchimp.com/playground/ – lehtu

+0

Bạn gửi dữ liệu này đến điểm cuối đó như thế nào? với Curl hay cái gì? Bởi vì các thông điệp errora đó được nói khá nhiều, rằng nó không nhận được các giá trị merge_fields của bạn, chỉ có các khóa. – lehtu

Trả lời

2

Khi thêm người dùng vào danh sách, bạn phải thêm tất cả các trường là 'bắt buộc' trong danh sách của bạn. Để xem các lĩnh vực của bạn, đăng nhập vào thư tinh tinh bấm vào 'Danh sách' sau đó vào danh sách của bạn. Từ menu thả xuống 'Cài đặt', chọn 'Danh sách các trường và | MERGE | thẻ '.

enter image description here

Bản tin là một phong tục bổ sung cần thiết lĩnh vực mà tôi nói thêm. Nếu tôi không gửi nó, tôi sẽ nhận được lỗi mà bạn có vì đó là trường bắt buộc. Tất cả các trường bổ sung cần thêm vào bên trong mảng merge_fields như 'NEWSLETTER'.

$dataCenter ='us10'; //last part of the api key 
$auth = base64_encode('user:'.$apikey); 
$data = array(
    'apikey'  => $apikey, 
    'email_address' => $email, 
    'status'  => 'subscribed', 
    'merge_fields' => ['NEWSLETTER' => '1'] 
); 
$json_data = json_encode($data); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/f3e05535e8/members/'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 
'Authorization: Basic '.$auth)); 
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); 
$result = curl_exec($ch); 

Nếu tôi đã có các lĩnh vực tùy chỉnh hơn trong hình thức của tôi, tôi sẽ thêm chúng như vậy:

'merge_fields' => [ 
    'NEWSLETTER' => '1', 
    'ANOTHERFIELD' => 'this is example data', 
] 

Thư tài liệu tinh tinh nói nó đòi hỏi một đối tượng 'merge_fields' mà khi mảng được chuyển đổi sang JSON nó trở thành đối tượng json.

http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/

0

Bạn cần phải điền REQUIRED bạn nhập thẻ hoặc loại bỏ chúng,

Lưu ý: Có một (có thể) một sự chậm trễ sau khi gỡ bỏ REQUIRED hợp nhất các lĩnh vực.

Tôi không quan tâm xung quanh để xem trong bao lâu, tôi có thể XÁC NHẬN sau khi sao chép danh sách yêu cầu thẻ hợp nhất.

1

Ngoài ra (để thiếu các trường bắt buộc), tôi đã gặp sự cố này bằng cách cố gắng thêm email có chữ cái viết hoa. Vì vậy, điều này cũng có thể xảy ra, nếu dữ liệu bạn đang gửi có định dạng sai.

0

Tôi nghĩ rằng json là ok. Mặc dù nó cho biết các trường hợp nhất, địa chỉ email kiểm tra không phù hợp.

tôi có thể làm cho một mã số 400 lỗi trong hai cách:

  • nỗ lực để thêm địa chỉ email đó là đã có trên danh sách
  • nỗ lực để thêm một địa chỉ giả ([email protected]) mà không xác thực hay gì đó ...

Nếu bạn muốn có một để tạo ra một địa chỉ giả sử dụng @ freddiesjokes.com
cũ // [email protected]

Tôi cố gắng @ example.com quá, Hope this helps người trong tương lai (trả lời gần 2 nhiều năm sau khi được hỏi)

Các vấn đề liên quan