無法弄清楚爲什麼這是運行在我的網站和Facebook之間的一個恆定的前向循環,永不終止最後一步(這是發佈狀態牆)。Facebook API發佈到牆和無限循環問題與許可檢查
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();
我們可能會或可能不會有基於此數據用戶是否登錄。
如果我們在這裏有一個$用戶ID,這意味着我們知道用戶登錄到 的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();
}
因此,這是一個非常骯髒的混搭,我找到了兩種不同的解決方案。如果我在單獨的文檔上執行權限,然後在沒有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語句實際上貼到牆上?我在這裏看不到我做錯了什麼。任何幫助不勝感激。由於
$ permissions從哪裏來? – Robbie 2012-07-30 22:27:37
Uhhhh我認爲它來自Facebook的PHP API,但也許我只是瘋了,這絕對會解釋無限循環。我想我只是不知道如何獲得Facebook授權後返回到原始源文檔的權限。 – 2012-07-30 22:38:56
在這種情況下,我會發布asnwer作爲答案;) – Robbie 2012-07-30 23:22:09