Использование Facebook для публикации на странице приложения Facebook - PullRequest
1 голос
/ 23 января 2012

Я внедрил 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, установленных для моего веб-сайта, я не нахожу файлов cookie с именем fbs_, 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;
            }
        }

1 Ответ

2 голосов
/ 23 января 2012

Да, вы должны прочитать файл cookie fbsr. Также его значение было изменено. Файл cookie больше не будет содержать токен доступа. Вместо этого вы получите код, с помощью которого вам нужно будет отправить запрос в Facebook на токен доступа к этому URL, заменив его соответствующими значениями:

https://graph.facebook.com/
  oauth/access_token?client_id={0}&redirect_uri=&client_secret={1}&code={2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...