10

新しい 3.0 REST API を介して MailChimp アカウントにアクセスしようとしています。私は次のことをしました:

using(var http = new HttpClient())
{
    var creds = Convert.ToBase64String(Encoding.ASCII.GetBytes("username:mailchimpapikey-us1"));
    http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", creds);
    string content = await http.GetStringAsync(@"https://us1.api.mailchimp.com/3.0/lists");
    Console.WriteLine(content);
}

ただし、このコードを実行すると、次の json の詳細で 401 エラーが発生します。

{"type":"http://kb.mailchimp.com/api/error-docs/401-api-key-invalid","title":"API Key Invalid","status":401,"detail":"Your API key may be invalid, or you've attempted to access the wrong datacenter.","instance":"a9fe4028-519e-41d6-9f77-d2caee4d4683"}

URI で使用しているデータセンター (この例では us1) は、API キーの dc と一致します。MailChimp SDK を使用すると API キーが機能するので、キーが無効ではないことがわかります。また、Fiddler を使用すると、MailChimp SDK が URI で行っているのと同じ dc を呼び出していることがわかります。

認証に問題がある理由についてのアイデアはありますか?

EDIT 質問で述べたように、新しい 3.0 REST API へのアクセスについて具体的に尋ねています。サードパーティのラッパーを使用するのではなく、これを直接実行しようとしています。

新しい API は http 呼び出しで構成されているため、非常に簡単です。私は単に認証ピースに問題があります。

4

3 に答える 3

0

以下を使用して、購読者をリストに追加する簡単な方法に関する記事を書きました。

Dim mailchimp As New ZmailChimp
Dim ListId$ = "9b2e63f0b9"   'List Sage' List
Dim email$ = "samsmith20@anymail.com" '"sam19@postcodelite.com"
Dim fieldListOnAdd = "FNAME,Sam,LNAME,Smith,MTYPE,User,MID,631637"
Dim fieldListOnUpdate = "FNAME,Sam,LNAME,Smith,MID,631637"  'Don't change MTYPE
'Put on 'Sage One' and 'Sage 50' group
Dim groupList = "407da9f47d,05086211ba"

With mailchimp
     .API$ = "46cMailChimpAPIKeyd1de-us14" 'MailChimp API key
     .dataCenter$ = "us14"  'Last 4 letters of API key
     .password$ = "Password!"
     MsgBox(.addSubscriber(ListId$, email, fieldListOnAdd, fieldListOnUpdate, groupList))
End With
mailchimp = Nothing

参照: http://www.codeproject.com/Tips/1140339/Mail-Chimp-Add-Update-e-mail-to-List-and-Subscribe
これで時間を節約できるかもしれません

于 2016-10-19T11:18:07.780 に答える
0

Mailchimp eコマース

var mcorder = new Standup.Ecomm.MailChimpManager(ConfigurationManager.AppSettings["MailChimpApiKey"]);
var orders = new MailOrder();

orders.CampaignId = ConfigurationManager.AppSettings["MailChimpCampaignId"];
orders.EmailId = ConfigurationManager.AppSettings["MailChimpEmailId"];

orders.Id = orderNumber;
orders.StoreId = "abcde";
orders.StoreName = "E-Commerce Store";
orders.Total = Convert.ToDouble(orderTotal);
orders.Tax = Convert.ToDouble(tax);
orders.Items = new List<MailOrderItem>();
foreach (var orderItem in orderItemList)
{
    var item = new MailOrderItem();
    item.ProductId = orderItem.OrderNumber;
    item.ProductName = orderItem.Title;
    item.SKU = orderItem.Sku;
    item.CategoryId = 0;
    item.CategoryName = " ";
    item.Quantity = orderItem.Quantity;
    item.Cost = Convert.ToDouble(orderItem.ProductCost);
    orders.Items.Add(item);
}
mcorder.AddOrder(orders);
于 2016-10-03T09:11:15.877 に答える