Опубликовать на стене Facebook / канал, используя AJAX / JQuery - PullRequest
4 голосов
/ 17 ноября 2010

тянет меня за волосы.

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

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

Я пытаюсь публиковать сообщения, используя ajax, вот так:

$.ajax({
    type: 'POST',
    url: "https://graph.facebook.com/bbeckford/feed",
    data: {message: wallMessage, target_id: friendID, access_token: "<?= $cookie['access_token'] ?>", format: "json"},
    success: function(data) { alert(data); },
    dataType: "JSON"
});

Но я просто продолжаю получать эту ошибку: «XMLHttpRequest не может загрузить https://graph.facebook.com/bbeckford/feed. Origin http://www.secretsantasetup.com не разрешенAccess-Control-Allow-Origin. "

Я провел поиск, и одно из предложений - сделать php-прокси, это приемлемый вариант?Как бы я поступил так?

Я совершенно неправильно подхожу к этому вопросу?

Любая помощь будет принята с благодарностью, спасибо, -Ben

EDIT Я хочу сделать это в фоновом режиме, то есть, например, пользователь выбрал 10 друзей, а затем при отправке приложение перебирает всех друзей и публикует что-то на их стене.Это возможно?Спасибо!

РЕДАКТИРОВАТЬ 2 Тестовая консоль внизу следующей страницы делает именно то, что я хочу, но исходный код отсутствует?- http://developers.facebook.com/docs/reference/rest/stream.publish

Ответы [ 4 ]

7 голосов
/ 21 ноября 2010

Здесь вы используете javaScript SDK

ШАГ 1

Сначала ваше приложение должно получить разрешение на публикацию на стене пользователя или на стене его друзей.

пример кода из Facebook: ссылка

FB.login(function(response) {
  if (response.session) {
    if (response.perms) {
      // user is logged in and granted some permissions.
      // perms is a comma separated list of granted permissions
    } else {
      // user is logged in, but did not grant any permissions
    }
  } else {
    // user is not logged in
  }
}, {perms:'read_stream,publish_stream,offline_access'});

publish_stream требуется для публикации на стене пользователя или его друзей.

Строка, которую необходимо отредактировать: {perms: 'read_stream, publish_stream, offline_access'})

Подробнее о других разрешениях: ссылка

ШАГ 2

Взято из Facebook JavaScript SDK Страницы и изменено ссылка

   FB.ui(
   {
     method: 'stream.publish',
     message: 'getting educated about Facebook Connect',
     attachment: {
       name: 'Connect',
       caption: 'The Facebook Connect JavaScript SDK',
       description: (
         'A small JavaScript library that allows you to harness ' +
         'the power of Facebook, bringing the user\'s identity, ' +
         'social graph and distribution power to your site.'
       ),
       href: 'http://github.com/facebook/connect-js'
     },
     target_id: 'ENTER YOU FRIENDS IDS - more than one, seperate by commas',
     action_links: [
       { text: 'Code', href: 'http://github.com/facebook/connect-js' }
     ],
     user_message_prompt: 'Share your thoughts about Connect'
   },
   function(response) {
     if (response && response.post_id) {
       alert('Post was published.');
     } else {
       alert('Post was not published.');
     }
   }

 );

Строка, которую нужно отредактировать или добавить: target_id: 'ENTER YOU FRIENDSIDS - более одного, разделенных запятыми,

:)

2 голосов
/ 17 ноября 2010

Вы не можете отправить запрос ajax на другой домен.

Просто возьмите facebook JS SDK и делайте что хотите.

0 голосов
/ 27 января 2014

Возможно, вам потребуется установить область при аутентификации пользователя (если вы этого не сделали).

Если вы прошли аутентификацию с использованием WAMS, проверьте этот блог, чтобы установить области действия http://blogs.msdn.com/b/azuremobile/archive/2013/11/25/what-s-new-in-azure-mobile-services-1-6-4247.aspx

0 голосов
/ 17 мая 2011

Я не уверен, где я это услышал, но:

jQuery.getJSON("https://graph.facebook.com/"+therequestid+"/?callback=?&access_token="+access_token,{},
           function(data, textStatus, jqXHR){
                          //bla-bla
           }
       );

Должно работать, где нужно добавить "? Callback =?" вещи. Я не знаю, почему это работает. Но пока это работает, я буду счастлив.

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