我正在尝试编辑大约两年前写的一些代码。 基本上,它是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,我无法进一步处理。你知道我错过了什么吗?
答案 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);