AP通信のフィードへのリクエストを認証するPHPメソッドを実装しようとしています。彼らのドキュメントから:
すべてのフィードおよびコンテンツ要求を認証するために、APWebFeedsシステムはHTTP基本認証を使用します。これは現在シンジケートフィードの標準です。ほとんどのフィードリーダーとリーダーコンポーネントでは、ユーザークレデンシャルを事前に構成し、URLではなくヘッダーで渡すことができます。
重要:現在、URLで直接クレデンシャルを渡すことは広くブロックされています。詳細については、Microsoftのセキュリティ情報(http://www.microsoft.com/technet/security/bulletin/MS04-004.mspx )を参照してください。
次の形式の名前/値で認証ヘッダーを作成するようにリーダーまたはコンポーネントを構成できます。
("Authorization", "Basic " + {Encoded_username_and_password})
ここで
{Encoded_username_and_password}
、は文字列「username:password」のバイトのBase64エンコーディングに置き換えられます。フィードをダウンロードするために独自のクライアントコードを記述している場合は、プログラミング言語のライブラリに組み込まれているHTTP基本認証を使用してください。HTTP基本認証は、ほとんどのプラットフォームで使用できます。たとえば、Perl、PHP、C、またはJavaです。
私の試みは:
/**
* Begin Transaction
*/
$url = "http://syndication.ap.org/AP.Distro.Feed/GetFeed.aspx?idList=" . implode(',', $idList) . "&idListType=products&maxItems=25";
$auth = "Authorization=Basic " . base64_encode($user . ":" . $pass);
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, $auth); // add POST fields
$result = curl_exec($ch); // run the whole process
curl_close($ch);
/**
* End Transaction
*/
var_dump($result);
それは私に与えます:
string(405) "
Authentication
FeedServer
Authentication Failed on GetFeed
Authentication denied no auth credentials detected
"
PHPでこのリクエストを認証する正しい方法は何ですか?