0

我正在尝试编辑大约两年前编写的一些代码。基本上,它是 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 弹出页面并要求进行身份验证和授权。在那之后,用户重定向我自己的注册页面,我使用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,我无法进一步处理。你知道我错过了什么吗?

4

1 回答 1

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);
于 2013-03-30T18:15:52.587 回答