1

クライアント サイトで初めて 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 呼び出しを使用してアプリのトークンを取得しようとしたところ、トークンが正常に返されました。これをトークンとして使用すると、グラフ エクスプローラーからの一時トークンで取得していたデータが表示されなくなります。

サイトのフォト ギャラリーを見るためだけにユーザーがログインする必要はありません。

これを可能にするアプリのトークンを取得するにはどうすればよいですか?

ありがとう。

4

0 に答える 0