クライアント サイトで初めて Facebook の PHP SDK を使用していますが、少し混乱しています。クライアントのFacebookページからデータを取得して、サイトに挿入しようとしています。私が取得しようとしているオブジェクトの 1 つは、フォト ギャラリーのクライアント フォト アルバムのリストです。
<?php
$albums = $Facebook->api("/169639127532/albums?fields=id,name,cover_photo");
$photos = array();
$queries = array();
foreach($albums['data'] as $album) {
if(array_key_exists("cover_photo", $album))
$queries[] = array("method" => "GET", "relative_url" => "/".$album['cover_photo']."?fields=source");
}
$rawPhotos = $Facebook->api('?batch='.json_encode($queries), 'POST');
foreach($rawPhotos as $photo) {
//print_r(json_decode($photo['body'])); echo "<br /><br />";
$photo = json_decode($photo['body']);
$photos[$photo->id] = $photo->source;
}
ご覧のとおり、アルバムのリストを取得してから、バッチ リクエストを使用してそれらのアルバムのすべてのカバー写真を取得しています。
クライアントのページ ID を使用すると、これは機能せず、何も返されません。ただし、別のページの ID を使用すると、これは機能します。
だから私はこれを承認に委ねました。アクセス トークンを使用して Graph API エクスプローラーを使用すると、写真を取得できることに気付きました。このため、API エクスプローラーで生成したトークンをコピーし、次の関数を使用してサイト上でグローバルに設定すると、これが機能します。
$Facebook->setAccessToken($token)
明らかに、トークンは限られた時間だけ存在するため、これは非常に堅牢なソリューションではありません。アプリの詳細で /oauth/access_token API 呼び出しを使用してアプリのトークンを取得しようとしたところ、トークンが正常に返されました。これをトークンとして使用すると、グラフ エクスプローラーからの一時トークンで取得していたデータが表示されなくなります。
サイトのフォト ギャラリーを見るためだけにユーザーがログインする必要はありません。
これを可能にするアプリのトークンを取得するにはどうすればよいですか?
ありがとう。