Как я могу опубликовать на стене Facebook с веб-службы C #? - PullRequest
5 голосов
/ 01 марта 2010

Я перепробовал кучу вещей и не могу понять, как разместить контент на стене Facebook из веб-службы. Кто-нибудь знает, возможно ли это вообще? Кажется, что единственный способ опубликовать контент - это включить страницу входа на веб-сайт, а это не то, что я хотел бы сделать. Для твиттера я смогла написать сообщение длиной менее 10 строк кода; просто добавьте имя пользователя / пароль в заголовок запроса и отправьте сообщение. Я думаю, что я спрашиваю, есть ли подобный простой способ сделать это для Facebook? Заранее спасибо!

1 Ответ

4 голосов
/ 01 марта 2010

Вам необходимо сначала создать приложение на Facebook . Важные настройки при настройке на Facebook:

Подключить -> Настройки Facebook Connect -> Подключить URL

Этот URL-адрес служит двум целям. Во-первых, этот URL будет использоваться в качестве базы для вашего междоменного канала связи , где вы разместите файл xd_receiver.htm.

Итак, если ваш URL-адрес: http://yoursite.com, вам нужен файл по адресу http://yoursite.com/xd_receiver.htm, который позволяет запускать клиентскую библиотеку JavaScript для Facebook .

Однако я настоятельно рекомендую вам не использовать ваш корневой URL. Выберите подкаталог, на который вы не ссылаетесь на своей странице. Что-то вроде http://yoursite.com/ex/fb будет хорошо (мне нравится ex для «внешнего», но это совершенно субъективно).

Хотя вам необязательно требуется клиентская библиотека JavaScript для выполнения фактической публикации. Однако вам это нужно, чтобы предоставить себе права, необходимые для публикации на стене.

Дополнительно -> Расширенные настройки -> Тип приложения

Для этого параметра установлено значение " Рабочий стол ".

Как только ваше приложение настроено, обратите внимание на следующие вещи (с главной страницы вашего приложения):

  1. Ваш ключ API
  2. URL вашего файла xd_receiver.htm

Имея эти две вещи в руках, вы хотите создать веб-страницу на сайте, которая использует клиентскую библиотеку JavaScript и FBML, чтобы дать вашему приложению право размещать сообщения на своей стене (или на стене страницы).

На этой странице вы хотите инициализировать клиентскую библиотеку JavaScript, используя свой ключ API, а также путь к файлу xd_receiver.htm. У меня страница ASP.NET настроена так:

<%@ Page Language="C#"%>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
  <script 
    src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/
      FeatureLoader.js.php" type="text/javascript"></script>
</head>

<body>
  <fb:login-button></fb:login-button>

  <hr>

  <fb:prompt-permission perms="offline_access">Click to grant offline 
    access permission.</fb:prompt-permission>
  <fb:prompt-permission perms="publish_stream">Click to grant publish 
    stream permission.</fb:prompt-permission>
  <fb:prompt-permission perms="read_stream">Click to grant read stream
    permission.</fb:prompt-permission>

  <input type="button" value="Get session key" onclick="
    document.all('apikey').value=FB.Facebook.apiClient.
    get_session().session_key;" />

  <input type="text" size="100px" id="apikey" />

  <script type="text/javascript">
  FB_RequireFeatures(["XFBML"], function () {
    FB.Facebook.init("API Key", "xd_receiver.htm URL");
  });
</script>

</body>

</html>

Следует отметить две вещи:

  • Вы запрашиваете offline_access расширенное разрешение . Это ключ к тому, чтобы вы могли публиковать сообщения на стене пользователя, когда он не в сети.
  • Разрешение read_stream, я не знаю, является ли необходимым для публикации в потоке, но это не помешает.
  • Очевидно, что разрешение publish_stream .

Теперь, когда вы перейдете на эту страницу, клиентская библиотека JavaScript позаботится о визуализации тегов с пространством имен fb.

Когда вы впервые увидите его, вы увидите кнопку подключения Facebook. Нажмите на нее и войдите, используя учетные данные пользователя, на стене которого вы хотите опубликовать сообщение.

После входа в систему страница будет перезагружена, а теги fb:prompt-permission будут отображаться как ссылки. Щелкнув по ссылкам, вы узнаете в Facebook, что пользователь разрешает приложению получать доступ к данным своего профиля.

После того, как вы предоставили приложению все разрешения (некоторые диалоговые окна могут появляться по пути), нажмите кнопку «Получить ключ сеанса».

Это заполнит текстовое поле ключом сеанса. Поскольку ваше приложение запросило offline_access, этот ключ сеанса будет распознаваться Facebook всякий раз, когда вы его используете.

Теперь у вас есть следующие данные:

  • Ключ API приложения
  • Секретный ключ приложения (который вы получаете со страницы приложения)
  • Идентификатор пользователя, на страницу которого вы хотите публиковать (вы должны получить его с вашего адреса в Facebook)

На этом этапе вы должны иметь возможность использовать любой из API Facebook для .NET. Я предпочитаю Facebook Developer Toolkit .

Создайте простое приложение Windows Forms с выбранными вами компонентами и выберите API приложения и секретный ключ приложения. Кроме того, установите ключ сеанса на ключ сеанса сверху , прежде чем совершать вызов для входа в систему в приложении Windows Forms. Установите точку останова после входа в систему.

Запустите ваше приложение. Должно появиться окно браузера, предлагающее войти в систему. Как только вы войдете в систему, вы должны достичь своей точки останова. На этом этапе секрет вашего приложения (если используется инструментарий разработчика Facebook) должен быть другим (я называю это секретом клиента . Запишите это. Это четвертый и последний фрагмент необходимой вам информации.

Теперь у вас есть все нужные вам кусочки:

  • API приложения
  • Секрет клиента
  • Ключ сеанса
  • ИД пользователя стены, которую вы хотите опубликовать на

Теперь, когда все это делается, при выполнении вызовов API используйте секрет клиента вместо секрета приложения , а также ключ сеанса и вы иметь возможность совершать звонки для записи на стене пользователя (или на странице, которой владеет пользователь, если у вас есть этот идентификатор) из вашей службы без каких-либо входов в систему пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...