EDIT * * *FacebookのPHP-SDKが解除SESSIONないユーザーがアプリケーションの権限
を取り消した場合、私は、私は十分に/正確に説明していないと思いますが、手順は次のとおりですセッション:
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();
facebook.php
をPHP-SDKからチェックしました。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は常にセッションを読み込みますか?
ユーザーがアプリケーションに接続していないときは、の動作では0
を出力する必要がありますが、もちろんこれは起こりません。
質問の最後に余分な情報を追加しました。 – Danny
私の答えは変わりません。誰かが許可を取り消すと、あなたがJS SDKを使用していることを知る方法がなく、現在のセッションが進行します。Facebookの許可が必要なメソッドを呼び出し、拒否されたレスポンスを探す必要があるかどうかを確認する。 –