1

Je reçois un problème étrange en utilisant l'API Mailchimp, j'essaie juste d'échanger mon code de courte durée que je leur ai donné pour un jeton d'accès selon leur documentation OAuth here.Mailchimp API retournant une réponse étrange

Cependant, j'obtiens ce qui semble être un problème d'encodage avec la réponse que je reçois. Voilà ce que j'ai en PHP: (il peut être reproduit même sans se substituer la client_id correcte, client_secret etc.)

<?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; 

?> 

Je reçois cette réponse ($ result):

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

Comment puis-je résoudre ce problème afin que la réponse que je reçois est correcte selon l'exemple de réponse sur les documents de Mailchimp? (Ci-dessous)

Exemple de réponse:

{"access_token":"5c6ccc561059aa386da9d112215bae55","expires_in":0,"scope":null} 
+0

Où est votre appel authorize? https://login.mailchimp.com/oauth2/authorize?response_type=code&client_id=635959587059&redirect_uri=http%3A%2F%2F192.168.1.8%2Foauth%2Fcomplete.php –

+0

@Sarang Damkondwar Cela se produit dans un script PHP séparé (avant ce processus d'échange d'un code pour un jeton d'accès), l'utilisateur est ensuite renvoyé par mailchimp (selon redirect_uri). – Darren

+0

ohk, Pouvez-vous s'il vous plaît console le résultat avec une autre fonction au lieu de l'écho, peut-être un objet? Vérifiez également si vous définissez l'encodage n'importe où! –

Répondre

0

Si vous ajoutez ce qui suit à votre code, vous obtiendrez la réponse correcte:

curl_setopt($curl, CURLOPT_ENCODING, ''); 

Par exemple

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, ''); 

Trouvé ceci ici:

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

Voir aussi cet article qui peut éclaircir la question

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

+0

Excellent, cela a fonctionné parfaitement, merci beaucoup. – Darren