web-dev-qa-db-ja.com

アクセストークンなしで呼び出されたFB.logout()。 javascript sdk

これで完全に失われ、 docs これについての洞察は実際には与えられません...

このログインボタンコードを使用して、アプリでFacebook Javascript SDKを使用します。

<fb:login-button scope="manage_pages,read_insights,ads_management" autologoutlink="true" size="large"></fb:login-button>

ドキュメントによると、ユーザーがログインすると、autologoutlink=trueparamはloginボタンをlog outに変えます。この機能を維持したいのですが、自分のボタンコードを書く

このイベントはFB.logoutを呼び出しますが、それでもコールバックでエラーメッセージを返します

FB.Event.subscribe('auth.logout', function(response) {                                              
    FB.logout(function(response) {
        // FB.logout() called without an access token.
    });
});

自分のログインボタンではなく、Facebookログインウィジェットを使用したいので、同じテーマの他の回答は役に立ちません。ログアウトが許可されていることを証明するためにaccess_tokenを渡す方法がわかりません...

9
Jared Eitnier

どうやらこれは不可能です、少なくとも私が理解することはできません。簡単な解決策は、カスタムのLog Outボタンからこの関数を呼び出すことです。

function fbLogoutUser() {
    FB.getLoginStatus(function(response) {
        if (response && response.status === 'connected') {
            FB.logout(function(response) {
                document.location.reload();
            });
        }
    });
}

ページのリロードはFacebookに別のリクエストを行い、Facebookは不正な状態を確認し、ブラウザからCookieを削除します。これにより、access_tokenが無効になります。したがって、これはサイトとFacebookからユーザーをログアウトします。

30
Jared Eitnier