私は Facebook アプリケーションを開発し、PHP-sdk を使用します。公式ドキュメントに記載されているアルゴリズムを使用して、ユーザーがアプリに参加できるようにし、ユーザーの user_id をデータベースに保存します。私のアプリは publish_stream アクセス許可を使用しているため、ユーザーのタイムラインに投稿が自動的に公開されます。
アプリケーションは、常に、データベースに登録されている一部のユーザー (すべてではない) の投稿を公開できないことがわかりました。これは、必要な権限を承認する前にデータベースに登録される可能性があるためです。以下は、Facebook api の公式ドキュメントから使用したコードの設計図です。
<?php
require_once('php-sdk/facebook.php');
$config = array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
?>
<html>
<head></head>
<body>
<?php
if($user_id) {
try {
/* $user_profile = $facebook->api('/me','GET');
echo "Name: " . $user_profile['name'];*/
//Here I run the code to save.
saveTheUserIdToRecordInTheDB($user_id);
//hypothetical function to save
} catch(FacebookApiException $e) {
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
// No user, print a link for the user to login
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>
</body>
</html>
私の主な質問は次のとおりです。ユーザーがログインリンクをクリックした後、何らかの理由で続行しない場合(インターネット接続が失われた、アプリへのアクセス許可を拒否したなど)、仮想機能は可能でしょうかsaveTheUserIdToRecordInTheDB()を実行して、そのユーザーの Facebook の ID をデータベースに保存しますか?
または、一部のユーザーが投稿を公開できないという説明は何ですか?