Php MailChimp访问令牌CURL请求不工作

Php MailChimp访问令牌CURL请求不工作,php,api,curl,mailchimp,Php,Api,Curl,Mailchimp,我正在尝试获取MailChimp访问令牌,但遇到问题。我可以成功登录请求“代码”,但当我去请求访问令牌时,我会得到一个奇怪的响应,例如: HTTP/1.1 400 Bad Request Server: nginx Content-Type: application/json Content-Length: 53 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store Pragma: no-cache X-UA-Compati

我正在尝试获取MailChimp访问令牌,但遇到问题。我可以成功登录请求“代码”,但当我去请求访问令牌时,我会得到一个奇怪的响应,例如:

HTTP/1.1 400 Bad Request
Server: nginx
Content-Type: application/json
Content-Length: 53
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store
Pragma: no-cache
X-UA-Compatible: IE=edge,chrome=1
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Fri, 12 Feb 2016 00:58:14 GMT
Connection: close
Set-Cookie: _AVESTA_ENVIRONMENT=prod; path=/
Set-Cookie: PHPSESSID=gjqtq7kelntldr82aonhpl3id3; expires=Fri, 12-Feb-2016 01:22:14 GMT; path=/; secure; HttpOnly
Set-Cookie: _TEST_COOKIE=9957289b5c4e0a63b4d5; path=/
Set-Cookie: PHPSESSDATA=2a45226783e34312753e142108bb48a8a0789b89%3A1455240134%3AeNoDAAAAAAE%3D; expires=Fri, 12-Feb-2016 01:22:14 GMT; path=/; domain=login.mailchimp.com; secure; httponly
这是我的密码:

$url = 'https://login.mailchimp.com/oauth2/token';
$client_id = 'xxxxxxxx';
$client_secret = 'xxxxxxxxx'; 
$redirect_uri = 'http://127.0.0.1/mailChimp/complete.php';
$code = $_GET['code'];
$fields = array(
        'grant_type' => 'authorization_code',
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'code' => $code,
        'redirect_URI' => $redirect_url
    );

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);   
curl_setopt($ch, CURLOPT_HEADER, TRUE);     
curl_setopt($ch, CURLOPT_TIMEOUT, TRUE);        
curl_setopt($ch, CURLOPT_USERAGENT, 'oauth2-draft-v10');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
// curl_setopt($ch, CURLOPT_ENCODING, "application/json");
$value = http_build_query($fields); //params is an array
curl_setopt($ch, CURLOPT_POSTFIELDS, $value);
$res=curl_exec($ch);
curl_close();
echo '<pre>';
print_r($res);
echo '</pre>';
die; 
$url='1!'https://login.mailchimp.com/oauth2/token';
$client_id='xxxxxxxx';
$client_secret='xxxxxxxxx';
$redirect_uri='1http://127.0.0.1/mailChimp/complete.php';
$code=$_GET['code'];
$fields=数组(
“授权类型”=>“授权代码”,
“客户id”=>$client\u id,
“客户机密”=>$client\u secret,
“代码”=>$code,
'重定向\u URI'=>$redirect\u url
);
$ch=curl\u init($url);
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch,CURLOPT_头,TRUE);
curl_setopt($ch,CURLOPT_TIMEOUT,TRUE);
curl_setopt($ch,CURLOPT_USERAGENT,'oauth2-draft-v10');
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept:application/json'));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$request);
//curl_setopt($ch,CURLOPT_编码,“application/json”);
$value=http\u build\u query($fields)//params是一个数组
curl_setopt($ch,CURLOPT_POSTFIELDS,$value);
$res=curl_exec($ch);
curl_close();
回声';
印刷品(港币);;
回声';
死亡
我看了这些文件: 这些文件: 我根本无法得到充分的回应


谢谢您的帮助。

重定向\u URI
更改为
重定向\u URI

这将解决您的问题。

我想知道这是否是您的编码问题。返回字符串看起来像编码的令牌。MailChimp希望对重定向uri进行编码。这就是你所指的吗?不,我的意思是字符串看起来像一个基于编码的字符串。。。通常用作代币。您是如何看待这一点的?400错误的主体是什么?另外:您的编码设置为application/json,但您正在传递表单编码的数据。此外,您还设置了两次CURLOPT_POSTFIELDS,但从未将请求设置为POST请求。