Публикация на стене FB с использованием Facebook C # SDK не удалась после 25 июля 2011 - PullRequest
1 голос
/ 05 августа 2011

Мне удалось публиковать сообщения на своей стене через приложение Facebook с помощью веб-приложения ASP.NET и Facebook C # SDK.У меня был токен доступа с неограниченным сроком действия, и он работал нормально до 25 июля 2011 года. Он был сброшен FB по некоторым причинам, связанным с безопасностью.Поэтому я изменил свой код, чтобы получить токен доступа на лету, используя следующий фрагмент кода.

        string url = "https://graph.facebook.com/oauth/access_token?client_id=app_id&client_secret=app_secret&grant_type=client_credentials&scope=offline_access,publish_stream";

        HttpWebRequest webRequest = null;
        StreamWriter requestWriter = null;
        string responseData = "";
        webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
        webRequest.Method = "POST";
        webRequest.ServicePoint.Expect100Continue = false;
        webRequest.Timeout = 20000;
        StreamReader responseReader = null;

        if (webRequest.Method == "POST")
        {
            webRequest.ContentType = "application/x-www-form-urlencoded";
            //POST the data.  
            requestWriter = new StreamWriter(webRequest.GetRequestStream());

            requestWriter.Write(string.Empty);

            responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
            responseData = responseReader.ReadToEnd();
            accessToken = responseData.Substring(responseData.IndexOf("=") + 1, responseData.Length - responseData.IndexOf("=") - 1);
        }

, и я выполняю публикацию, используя

        if (accessToken.Length > 0)
        {
            url = "https://graph.facebook.com/me/feed?access_token=" + accessToken;
        }

        var client = new FacebookClient();

        dynamic parameters = new ExpandoObject();
        if (!(String.IsNullOrEmpty(txtMessage.Text) & String.IsNullOrWhiteSpace(txtMessage.Text)))
        {
            parameters.message = txtMessage.Text;
        }
        parameters.link = "";
        parameters.picture = "";
        parameters.name = "";
        parameters.caption = "";
        parameters.description = "";
        parameters.actions = new
        {
            name = "",
            link = "",
        };
        parameters.privacy = new
        {
            value = "ALL_FRIENDS",
        };
        parameters.targeting = new
        {
            countries = "",
            regions = "",
            locales = "",
        };
        try
        {
            dynamic result = client.Post("me/feed", parameters);
        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
        }

. Я получаю следующее исключение«(OAuthException) Активный токен доступа должен использоваться для запроса информации о текущем пользователе.»Что-то изменилось после 25,2011 июля?

Я много гуглил, чтобы найти решение для этого, но ничего не решило мою проблему.

Заранее спасибо!MANOOH

...