0

私は Facebook JavaScript SDK を使用して Facebook でログインしています。唯一の問題は、コントローラーの後に JavaScript コードが実行されることです。

私が望むのは、コントローラーに行く前にユーザーがログインしているかどうかを確認することだけです。

何か助けはありますか?

これはJavaスクリプトコードです

<script type="text/javascript">
window.fbAsyncInit = function () {
    FB.init({ appId: '@Facebook.FacebookApplication.Current.AppId', channelURL: '@Request.Url.Scheme://@Request.Url.Authority@Url.Content("~/fbchannel.ashx")', cookie: true, xfbml: true, oauth: true });
    FB.Event.subscribe('auth.login', function (response) { window.location.reload(); });
    FB.Event.subscribe('auth.logout', function (response) { window.location.reload(); });
    FB.Event.subscribe('auth.authResponseChange', function (response) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            $.ajax({
                url: '/Home/SaveAccess',
                type: 'POST',
                data: { A: accessToken },
                success: function (data) {
                },
                error: function() {}
            });
            var field = document.createElement("input");
            field.setAttribute("type", "hidden");
            field.setAttribute("name", 'accessToken');
            field.setAttribute("value", accessToken);
            form.appendChild(field);

            document.body.appendChild(form);
            form.submit();


        } else if (response.status === 'not_authorized') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            $.ajax({
                url: '/Home/SaveAccess',
                type: 'POST',
                data: { A: accessToken },
                success: function () {
                }
            });
        } else {
        }
    });
(function(d){
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
}(document));

アクセス トークンをセッションに保存します。問題は、このコードがコントローラー コードの後に​​実行されることです。

4

1 に答える 1

0

あなたが望んでいたものを正確に理解していませんでした。これが私がやったことの解決策です。

いつでも電話FB.getLoginStatusして、ユーザーが接続されているかどうかを確認できます。

    FB.getLoginStatus(function (response) {
        if (response.status === 'connected') {
              // user logged in and connected        
       }
    });

これを に追加してfbAsyncInit、ページが読み込まれるたびにユーザーのステータスを確認することもできます。

于 2013-03-01T08:50:01.617 に答える