У меня есть веб-сайт, который я зарегистрировал как приложение Facebook - теперь у меня есть идентификатор приложения.
Мой сайт ASP.net C #. Когда пользователь нажимает кнопку, я бы хотел, чтобы он опубликовал заранее заданное сообщение на своей стене. Я ожидаю, что Facebook представит пользователю диалог входа в систему - он войдет в систему и предоставит разрешение на публикацию для моего веб-приложения.
У кого-нибудь есть пример кода, который бы это делал? Я думаю, что мне нужно использовать Graph API, но все примеры, которые я видел, используют PHP - о котором я ничего не знаю. Я ищу пример, который будет использовать Java Script (о котором я почти ничего не знаю) или C # (красиво!).
* Обновление *
Мне удалось получить access_token. Теперь я звоню через Facebook C # API, чтобы отправить сообщение на стену. Я получаю сообщение об ошибке:
(# 803) Некоторые из указанных вами псевдонимов не существуют: profile_id
Я прошел по коду API и обнаружил, что он пытается отправить по следующему адресу: {https://graph.facebook.com/PROFILE_ID/feed}, данные публикации: message = Sample + message + from + c% 23 + sdk & access_token = 199209316768200 | 2.1avFTZuDGR4HJ7jPFeaO3Q __ 3600.1302897600.1-100000242760733 |. R4DkNDf4JCb6B2F64n5TSQwBqvM
Я почти уверен, что мой токен должен быть действительным. Перед запросом токена доступа я запросил publish_stream в запросе авторизации приложения следующим образом:
Response.Redirect ("https://www.facebook.com/dialog/oauth?client_id=" + myAppId + "&redirect_uri=" + myURL + "&scope=publish_stream");
Код SDK, который фактически делает запрос, выглядит следующим образом:
private string MakeRequest(Uri url, HttpVerb httpVerb,
Dictionary<string, string> args)
{
if (args != null && args.Keys.Count > 0 && httpVerb == HttpVerb.GET)
{
url = new Uri(url.ToString() + EncodeDictionary(args, true));
}
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = httpVerb.ToString();
if (httpVerb == HttpVerb.POST)
{
string postData = EncodeDictionary(args, false);
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] postDataBytes = encoding.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postDataBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postDataBytes, 0, postDataBytes.Length);
requestStream.Close();
}
try
{
using (HttpWebResponse response
= request.GetResponse() as HttpWebResponse)
{
StreamReader reader
= new StreamReader(response.GetResponseStream());
return reader.ReadToEnd();
}
}
Кто-нибудь может увидеть, что я делаю не так?
Большое спасибо,
Роб.