使用Facebook在Facebook应用程序页面上发布

本文关键字:Facebook 应用程序 使用 | 更新日期: 2023-09-27 18:21:00

6个月前,我在我们的web应用程序网站(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,只有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;
            }
        }

使用Facebook在Facebook应用程序页面上发布

是的,您应该阅读fbsr cookie。此外,它的值也发生了变化。cookie将不再包含访问令牌。相反,你会得到一个代码,用它你必须向Facebook提交访问该url的令牌的请求,并替换为适当的值:

https://graph.facebook.com/
  oauth/access_token?client_id={0}&redirect_uri=&client_secret={1}&code={2}