Как я могу отправить на стену Facebook от c# веб-сервиса?

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

5
задан Bedantic 1 March 2010 в 00:13
поделиться

1 ответ

Сначала вам нужно создать приложение на Facebook . Важные настройки при настройке на facebook:

Connect -> Facebook Connect Settings -> 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 Connect. Нажмите на нее и войдите, используя учетные данные пользователя, на стене которого вы хотите публиковать сообщения.

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

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

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

Теперь у вас есть следующая информация:

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

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

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

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

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

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

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

4
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: