これが私のサイトとFacebookの間で一定の順方向ループで実行されている理由を理解できず、最終ステップ(ステータスをウォールに投稿すること)で終了することはありません。
require 'facebook.php';
//Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXX',
));
$user = $facebook->getUser();
ユーザーがログインしているかどうかに基づいて、このデータがある場合とない場合があります。
ここに$useridがある場合、それはユーザーがFacebookにログインしていることはわかっているが、アクセストークンが有効かどうかはわからないことを意味します。ユーザーがFacebookからログアウトした場合、アクセストークンは無効です。
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
つまり、これは私が見つけた2つの異なるソリューションのかなり汚いマッシュアップです。また、別のドキュメントでアクセス許可を実行してから、ifステートメントなしでこの次の部分をロードしても、実際には問題なく機能します。だから私はFacebookに正しく接続していることを知っています...
if ($user):
if(array_key_exists('publish_stream', $permissions['data'][0]) ) {
// Permission is granted!
// Do the related task
$post_id = $facebook->api('/me/feed', 'post', array('message'=>'Testing testing 123!'));
echo "<br><br><br><h1> POSTED STATUS TO WALL!</h1>";
} else {
// We don't have the permission
// Alert the user or ask for the permission!
echo "Click Below to Enter!";
header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
}
ここでの問題は、公開ストリームのアクセス許可を何度も繰り返し実行し続け(ヘッダーが前方にあり、リダイレクトが多すぎるとタイムアウトになる)、実際に壁に投稿するifステートメントをキャッチしないことです。ここで何が間違っているのかわかりません。どんな助けでも大歓迎です。ありがとう