2013-03-28 233 views
0

我想編輯一些大約兩年前編寫的代碼。 基本上,這是Facebook連接,用戶可以使用Facebook應用程序註冊我的網站。我對Facebook的連接JavaScript代碼:FacebookWebContext.Current始終爲空

<div id="fb-root"></div> 

<script src="http://connect.facebook.net/tr_TR/all.js"></script> 
<script> 

    FB.init({ appId: '<%=Facebook.FacebookApplication.Current.AppId %>', status: true, cookie: true, xfbml: true });  


    FB.Event.subscribe('auth.login', function (response) { 
     window.location.href = UrlAmpReplace('<%=this.FacebookLoginURL %>'); 
    }); 

    FB.Event.subscribe('auth.logout', function (response) { 
     window.location.href = UrlAmpReplace('<%=this.FacebookLogoutURL %>'); 
    }); 

</script> 

如果用戶點擊Facebook的按鈕,似乎有一個Facebook頁面彈出並要求authenticaion & authorication。一個之後,用戶重定向我自己的註冊頁面,在這裏我使用Facebook.Web.dll如下:

var fb = new FacebookWebClient(FacebookWebContext.Current); 

var result = (IDictionary<string, object>)fb.Get("/me"); 

this.smFacebookUserID = FacebookWebContext.Current.Session.UserId; 

...做一些動作..

我的問題是; FacebookWebContext.Current總是返回null,我無法進一步處理。你有什麼想法我失蹤?

+0

看來,你有同樣的問題與thi我的同伴。 http://stackoverflow.com/questions/8524459/facebookwebcontext-current-isauthenticated-always-returns-false –

回答

0

我發現我的問題的解決方案,我認爲問題與我使用的FB js事件(auth.login)有關。 因此,這裏是我做過什麼:

取而代之的是以下JS方法:

FB.Event.subscribe('auth.login', function (response) { 
     window.location.href = UrlAmpReplace('<%=this.FacebookLoginURL %>'); 
    }); 

我已經使用了以下內容:

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    if (response.status === 'connected') { 

     var accessToken = response.authResponse.accessToken; 
     window.location.href = 'myURL.aspx?token='+accessToken; 

    } 
}); 

然後在我myURL.aspx,使用的accessToken從查詢字符串,我可以達到:

var client = new FacebookClient(accessToken);