Mailchimp API 返回奇怪的响应

Posted

技术标签:

【中文标题】Mailchimp API 返回奇怪的响应【英文标题】:Mailchimp API returning strange response 【发布时间】:2018-03-13 16:28:33 【问题描述】:

我在使用 Mailchimp API 时遇到了一个奇怪的问题,我只是想根据他们的 OAuth 文档 here 将我从他们那里获得的短暂代码交换为访问令牌。

但是,我收到的回复似乎存在一些编码问题。这就是我在 php 中所拥有的:(即使不替换正确的 client_id、client_secret 等也可以复制它)

<?php

  //### INITIALISE CURL #############################
  $curl = curl_init();

  //### SET CURL OPTIONS ############################
  curl_setopt($curl, CURLOPT_URL,"https://login.mailchimp.com/oauth2/token" );

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt($curl, CURLOPT_POST, 1 );
  curl_setopt($curl, CURLOPT_POSTFIELDS, "grant_type=authorization_code&client_id=XXXXXXXXXXXX&client_secret=XXXXXXXXXXX&code=XXXXXXX&redirect_uri=https://mailchimp.test.com" );
  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(
  "Content-Type: multipart/form-data")); 

  //### EXECUTE CURL ###############################
  $result = curl_exec($curl);
  if(curl_getinfo($curl, CURLINFO_HTTP_CODE) =='0') 
    echo curl_error($curl);
  
  curl_close($curl);

  echo $result;

?>

我收到此回复 ($result):

�M��    �0F�UJ�N�NQ� %`��' "�Ћ���nb��f=�&9����i'f��]�~j*$��W��Reg��_T1-���;�oc

如何解决这个问题,以便我得到的响应按照 Mailchimp 文档上的示例响应是正确的? (下)

示例响应:

"access_token":"5c6ccc561059aa386da9d112215bae55","expires_in":0,"scope":null

【问题讨论】:

您的授权电话在哪里? login.mailchimp.com/oauth2/… @Sarang Damkondwar 这发生在一个单独的 PHP 脚本中(在此交换访问令牌的代码的过程之前),然后从 mailchimp 返回用户(根据 redirect_uri)。 哦,你能用其他函数代替 echo 来控制结果吗,可能是对象一吗?另外请检查您是否在任何地方设置了编码! 【参考方案1】:

如果您将以下内容添加到您的代码中,您将得到正确的响应:

curl_setopt($curl, CURLOPT_ENCODING, '');

例如

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_ENCODING, '');

在这里找到这个:

https://github.com/drewm/mailchimp-api/pull/69/files

也可以看看这篇文章,这可能会解决问题

https://kb.mailchimp.com/campaigns/design/i-have-strange-characters-in-my-content

【讨论】:

以上是关于Mailchimp API 返回奇怪的响应的主要内容,如果未能解决你的问题,请参考以下文章

mongodb:获取 API POST 请求返回一个奇怪的响应

MailChimp 重新订阅已删除的成员会导致 API 返回 400 错误请求

Laravel validate() 捕获错误并使用 POST 方法返回奇怪的响应。使用 Postman 进行测试

CreateProcess 和奇怪的 nslookup 错误

Mailchimp API 增长历史方法在某些月份返回 0

Facebook Graph API 搜索返回奇怪的结果