2012-01-02 6 views
1

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

exports = fm.namespace(this,'bla','facebook') 

exports['init'] = function(){ 
    window.fbAsyncInit = function() { 
    if (undefined !=RAILS_ENV['facebook_app_id']) 
    {FB.init({ 
       appId  : RAILS_ENV['facebook_app_id'], // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : true // parse XFBML 
      });} 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
} 
exports['sendRequestToOneRecipient']= function (uid) { 
    FB.ui({method: 'apprequests', 
    message: "bla bla", 
    to: uid 
    }, requestCallback); 

    function requestCallback(response) { 
    if (response && response.to) { 
     console.log("Message was sended"); 
    } else { 
     console.log("Message was not sended."); 
    } 
    } 
} 

Насколько я знаю, он не требует каких-либо разрешений, потому что это явное действие от пользователя. Когда пользователь нажимает кнопку, появляется окно facebook, и все работает нормально. Обратный вызов посылает обратно APPID и идентификатор пользователя в destinatary, но сообщение никогда не будучи notifified в facebook destinatary счет

Нет JavaScript ошибки на консоли

Similary Я отправляю к стене facebook друзей и он работает без каких-либо проблем. Тот же код, но вместо «apprequest», метод «feed»

+2

все кажется правильным ... Есть ли какие-либо ошибки, показывающие? Или просто попробуйте отправить запрос в тестовую учетную запись и проверить, прошел ли этот запрос до тестовой учетной записи, график api explorer https://developers.facebook.com/tools/explorer - ваш запрос должен быть https: //graph.facebook .com/test_acc_id/apprequests – Vijay

+1

Большое спасибо за ваш ответ. Я проверил это на инструменте, который вы мне отправили, и там есть apprequests. Я не использую тестовую учетную запись. Я отправляю на другой аккаунт в facebook. Может быть, это проблема? – kanedaki

+0

Данные, возвращаемые с помощью инструмента { "идентификатор": "315836123333964_100003158789166", "приложений": { "имя": "XXX_test", "canvas_name": "XXX", "пространство имен": "XXX" , "идентификатор": "161947XXX94867" }, "к": { "имя": "Juan Lab", "идентификатор": "100003153330166" }, "от": { "имя": «Miguel Martin», «id»: «1383976222» }, «сообщение»: «Эй, проверьте! :)», «created_time»: «...» }, Я не знаю, что это за поля холста и пространства имен. Может быть, у меня есть что-то, что можно было бы настроить на приложении facebook? – kanedaki

ответ

3

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

Проблема теперь в том, что мне нужно создать specfic-страницу для использования в качестве iframe, потому что мой сайт выглядит не так, как iframe. Также я должен запросить сертификат ssl, поскольку URL-адрес холста должен быть https. Если кто-нибудь знает обходной путь, пожалуйста, дайте мне знать.

Спасибо за ваш anwsers

0

Вставьте следующий файл шаблон:

if (top.location != self.location) 
{ 
    top.location = self.location 
} 

Если местоположение основного сайта вы на это не то же самое, как местоположение вашего сайта перенаправляет вас на ваш сайт.

Смежные вопросы