FacebookWebContext.Current始终为null

时间:2013-03-28 21:38:01

标签: c# asp.net facebook

我正在尝试编辑大约两年前写的一些代码。 基本上,它是Facebook连接,用户可以使用Facebook应用程序注册我的网站。我连接Facebook的JavaScript代码是:

<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弹出页面,并要求提供认证功能。 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,我无法进一步处理。你知道我错过了什么吗?

1 个答案:

答案 0 :(得分: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中,使用querystring中的accessToken,我可以达到:

var client = new FacebookClient(accessToken);