私はMailChimp APIを使用して、フォーム上のボックスをチェックした後にリストにサブスクライバを追加しようとしています。私はcURLでこれを行うことができ、正常に動作しますが、これが有効になるサーバーには有効になっていません。私はfile_get_contents()を使用しようとしているが、それは私に401エラーを与える。 APIキーとリストIDを確認しましたが、どちらも正しいです。私は構文がうんざりしているか、間違った場所に何かを入れていると推測していますが、問題は見えません。私が試したことは以下の通りです。誰にでもアイデアはありますか?MailChimp APIをcURLなしで使用する
if (isset($_POST['mailtest']) == 'value1'){
$email = $_POST['email'];
$fname = $_POST['firstname'];
$lname = $_POST['lastname'];
$mailchimp_api_key = 'apikey';
$mailchimp_list_id = 'listid';
$data = array(
'apikey' => $mailchimp_api_key,
'id' => $mailchimp_list_id,
'email' => $email
'status'=>'subscribed'
);
$memberId = md5(strtolower($email));
$dataCenter = substr($mailchimp_api_key ,strpos($mailchimp_api_key, '-')+1);
$endpoint = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $mailchimp_list_id . '/members/' . $memberId;
if ($fname && $lname) $data['merge_vars '] = array('FNAME' => $fname, 'LNAME' => $lname);
$json_data = json_encode($data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => "Content-type: application/json",
"Connection: close\r\n" .
"Content-length: " . strlen($json_data) . "\r\n",
'data' => $json_data,
),);
$context = stream_context_create($options);
$result = file_get_contents($endpoint, false, $context);
}
http 401エラーは不正を意味します。あなたは正しく認証されていません。 – Augwa
'file_get_contents()'に固執したい場合は、認証するための文脈が必要です(マニュアルを読む)。 [stream_context_create()](http://php.net/manual/en/function.stream-context-create.php)を見て、必要なヘッダーを作成してください。 – fpietka