1

アプリがユーザーに関するデータ(誕生日、場所など)を収集することを許可したユーザーに関するプロファイル情報を取得しようとしています。これは、ユーザーが実際に私のアプリにアクセスし、トークン交換を通じてFacebookで認証する場合にのみ、正常に機能します。

ただし、ユーザーの場所が変更されていないかどうかを定期的に確認できるようにしたいです。また、ユーザーがFBに自分に関する情報を追加した場合も、情報が同じになるようにアプリと「同期」したいと思います。

そこで、ユーザーのアクセストークンを保存し、後でcronジョブを使用して、トークンを使用して彼のプロファイルを取得します。

$user = mysql_query ... <- get data from mysql

その後:

$user_profile = $facebook->api('/'.$user['uid']);

もちろん機能しますが、拡張アクセス許可を使用して必要なすべてのデータが表示されません。

offline_accessの呪いは無効になっていますか?または、そのようなデータを取得する別の方法を使用する必要がありますか?クエリの最後に?fields = birthdayなどを追加しようとしましたが、それでも機能しません。

4

2 に答える 2

1

これが「offline_accessの無効化」の意味であるかどうかはわかりませんが、ロードマップに示されているように、Facebookはoffline_accessを非推奨にしています。

http://developers.facebook.com/roadmap/

非推奨の詳細については、こちらをご覧ください。

http://developers.facebook.com/roadmap/offline-access-removal/

また、データベースから受信したアクセストークンを正しく設定していますか?

$facebook->setAccessToken($user['access_token']);
于 2012-04-24T12:31:46.013 に答える
1

これを実現する方法を見つけました-アクセストークンは、次のように、APIクエリの追加パラメータとして渡す必要があります。

$user_profile = $facebook->api('/'.$user['uid'].'', array('access_token' => $session['access_token']));

誰かがこのページに不思議に思う場合に備えて、保存されたアクセストークンを使用して、認証せずに必要なユーザーに関する完全な情報にアクセスする方法を次に示します。

<?

require "facebook.php";

$facebook = new Facebook(array(
    'appId'  => your_app_id,
    'secret' => your_app_secret
));

// get the saved user details 
$user = mysql_fetch_assoc(mysql_query('SELECT * FROM `facebook_tokens` WHERE `id` = "1"'));

$session = array(
    'access_token' => $user['access_token'],
    'secret' => $user['secret'],
    'session_key' => $user['session_key'],
    'uid' => $user['uid']
);

$sig = '';
foreach($session as $key => $value) {
    $sig .= implode('=', array($key, $value));
} 
$session['sig'] = md5($sessionStr.'Your App Secret');

$facebook->setSession($session, false);

$user_profile = $facebook->api('/'.$session['uid'], array('access_token' => $session['access_token']));

echo '<pre>';
print_r($user_profile);
echo '</pre>';  

?>
于 2012-04-25T15:04:30.850 に答える