web-dev-qa-db-ja.com

Mailchimp API V3 jQuery Ajax POSTサブスクライバー

Mailchimp API(v3.0)に大きな更新があり、form.submit()のサブスクライバーをPOSTするために、jQueryプラグインの多くが古くなっています。

V3.0のドキュメントを読んだ後:

サブスクライバーの管理 は、次のJSONオブジェクト形式を提案します。

_{
   "email_address": "[email protected]", 
   "status": "subscribed", 
   "merge_fields": {
      "FNAME": "Urist", 
      "LNAME": "McVankab"
   }
}
_

そして、APIリストリソースの次のルートエンドポイント:

_https://<dc>.api.mailchimp.com/3.0/_

これが、jQuery Ajax POSTリクエストを使用したform.submit()コードです。

_$(document).ready(function(){
    var mcForm = $('#mailchimpForm');
    var mailchimp = {};
    mailchimp.dc='us5';
    mailchimp.id='xxxxxxxx';
    var url = '//' + mailchimp.dc + '.api.mailchimp.com/3.0/lists/' + mailchimp.id + '/members/';

    function beginMailchimpPost(data){
        var params = JSON.stringify(data);
        $.ajax({
            url: url,
            method: 'POST',
            data: params,
            dataType: 'jsonp',
            contentType: 'application/json; charset=utf-8',
            error: function(res, text){
                console.log('Err', res);
            },
            success: function(res){
                console.log('Success', res);
            }
        });
    }
});
_

これはJSON.stringify(data)オブジェクトです。

_{"email_address":"[email protected]","status":"subscribed","merge_fields":{"FNAME":"Name","LNAME":"Last name"}}
_

そして、次のエラーが発生します。

_GET http://... 401 (Unauthorized)
Err Object {readyState: 4, status: 404, statusText: "error"}
_

何が悪いのでしょうか?

MailchimpのAPI v3.0ドキュメント (リストメンバーコレクション)へのリンクは次のとおりです。

9
Gus

私が行った方法は、AJAXコードを使用しますが、MailChimpのものをすべて取り除き、投稿データをPHPファイルに送信します。このコードを使用しました:

https://github.com/actuallymentor/MailChimp-API-v3.0-PHP-cURL-example/blob/master/mc-API-connector.php

1人のユーザーをサブスクライブするために必要な部分以外はすべて削除しただけで、魅力のように機能しました。エラー報告の場合、おそらくPHP側でエラーを検出し、HTTPステータスをAJAXに送信できます。

2
David Rhoderick

残念ながら、フロントエンドのMailchimpAPIをリクエストすることはできません。

注MailChimpは、アカウントAPIキーを公開する潜在的なセキュリティリスクのため、CORSリクエストを使用したAPIのクライアント側実装をサポートしていません。

https://developer.mailchimp.com/documentation/mailchimp/guides/get-started-with-mailchimp-api-3/#authentication

2
Daniel Nass

APIキーを渡していないため、401を取得しています。

あなたはあなたがajax呼び出しであることに以下を追加する必要があります:

beforeSend: function(xhr) { xhr.setRequestHeader("Authorization",
    "Basic " + btoa("api:" + mailchimp_api_key)); };

Mailchimp_api_keyがアカウントのキーです。 APIを使用した認証の詳細については、 http://kb.mailchimp.com/api/article/api-3-overview をご覧ください。

0
aubreyrhodes