編輯* * *Facebook的PHP-SDK不取消會議,如果用戶撤銷應用程序的權限
我覺得我沒有解釋不夠/正確的,這裏的步驟,當我有問題會話:
1.-用戶使用jssdk登錄並接受我的應用程序。
2.-現在我使用PHP-SDK getUser();並限制或顯示一些頁面。
3.-用戶不註銷,但直接撤消配置文件設置的權限。
4.-用戶返回到我的應用程序(當然沒有關閉頁面/瀏覽器),並且PHP-SDK仍然返回getUser()作爲有效的 連接用戶!
5.-如果我的應用程序應該知道用戶撤銷了權限,如果PHP-SDK說getUser()是一個有效的ID?
我的用戶登錄到我與JS-SDK應用程序和下面的代碼:
FB.login(function(response) {
// handle the response
}, {scope: 'email,user_likes'});
- 這是異步的劇本
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '****************', // App ID
channelUrl : 'localhost', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth:true
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>`
然而,當用戶刪除應用程序從他們的隱私設置並嘗試再次訪問我的應用程序,此代碼仍輸出用戶ID $user = $facebook->getUser();
我檢查了來自PHP-SDK的facebook.php
,並且有一種方法應該是unset
SESSION
但不會取消任何設置。
protected function clearPersistentData($key) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to clearPersistentData.');
return;
}
$session_var_name = $this->constructSessionVariableName($key);
unset($_SESSION[$session_var_name]);
}
這是一個錯誤?或者即使用戶撤銷了應用程序的權限,Facebook也總是讀取會話?
我認爲$facebook->getUser();
的行爲應該輸出0
當用戶沒有連接到應用程序,但當然這不會發生什麼。
我在問題的底部添加了額外的信息,只是這樣才能更好地解釋。 – Danny 2012-03-24 09:50:29
我的答案保持不變。當有人撤銷權限時,無法知道您正在使用JS SDK並且當前會話正在進行。要確認你需要調用一個需要在Facebook上獲得許可的方法並查找拒絕的響應。 – 2012-03-25 05:45:28