Мне удалось публиковать сообщения на своей стене через приложение 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