我在6个月前在我们的网站应用程序网站(Asp.Net)中实现了一个页面,您可以在其中验证Facebook以使用您的Facebook帐户发布当前fb用户登录墙的消息。 现在,它发现它不再起作用了。我不知道为什么。我怀疑Facebook已经改变了他们的api。 我可以给你一些代码,或者告诉我我试图实现的最终解决方案。 所以: 我有这个
然后在底部:
<!-- inserted for fb temp -->
<div id="fb-root">
</div>
<script type='text/javascript'>
window.fbAsyncInit = function () {
FB.init({ appId: '<%= FacebookAppID %>', status: true, cookie: true, xfbml: true });
/* sample events to respond to*/
FB.Event.subscribe('auth.login', function (response) { });
FB.Event.subscribe('auth.logout', function (response) { });
FB.getLoginStatus(function (response) { });
};
(function () {
//alert(document.location.protocol);
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
} ());
</script>
我怀疑获取cookie存在问题。 在FacebookConnect.cs中就是这个功能
private string GetFacebookCookieValue(string cookieValue)
{
string tmp = "";
string cookieName = "fbs_" + ConfigurationManager.AppSettings["AppID"];
tmp += cookieName + "";
string retString = null;
HttpCookie c = HttpContext.Current.Request.Cookies[cookieName];
if (HttpContext.Current.Request.Cookies[cookieName] != null)
{
retString = HttpContext.Current.Request.Cookies[cookieName][cookieValue];
tmp += " [[" + HttpContext.Current.Request.Cookies[cookieName][cookieValue];
}
else
{
//tmp += c.ToString() + "]] ";
}
//throw new Exception(tmp);
return retString;
}
当我查找为我的网站设置的cookie时,我找不到任何名为fbs_的cookie,onlt fbsr_
更新
public string AccessToken
{
get
{
//NOTE: oddly enough the accesstoken key in the cookie is actually \"access_token
string token = GetFacebookCookieValue("\"access_token");
return token;
}
}
答案 0 :(得分:2)
是的,您应该阅读fbsr cookie。此外,它的价值已经改变。 cookie不再包含访问令牌。相反,您将获得一个代码,您必须使用该代码向Facebook提交访问此令牌的请求,并替换为适当的值:
https://graph.facebook.com/
oauth/access_token?client_id={0}&redirect_uri=&client_secret={1}&code={2}