Mailchimp API 返回奇怪的响应
Mailchimp API returning strange response
我在使用 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}
如果您将以下内容添加到您的代码中,您将得到正确的响应:
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 时遇到了一个奇怪的问题,我只是想根据他们的 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}
如果您将以下内容添加到您的代码中,您将得到正确的响应:
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