2015-10-16 6 views
0

Я изменил замечательную библиотеку JQuery для выбора xdamman's (https://github.com/xdamman/selection-sharer), чтобы использовать FB.ui вместо виджета facebook/dialog/feed. Это связано с тем, что ни виджет/dialog/feed, ни виджет /sharer/sharer.php не могут контролировать сводку ссылок для общей ссылки. Таким образом, я использовал следующий код:Facebook SDK FB.ui Link Sharer: «Произошла ошибка. Повторите попытку позже».

FB.ui(
    { 
     method: 'feed', 
     name: name, // (e.g. "Interesting News Item") 
     link: self.url2share, // (the current URL as determined by window.location.href, e.g. "https://www.commonspace.scot/articles/2688/poll-snp-support-surges-further-with-months-to-go-before-scottish-elections") 
     picture: picture, // (e.g. "https://www.commonspace.scot/public/artarticle/a3/41/4162_6493.jpg?c=64a2);%20?%3E") 
     caption: 'commonspace.scot', 
     description: text // (arbitrary text string) 
    }, 
    function(response) { 
     if (response && response.post_id) { 
     //alert('Post was published.'); 
     } else { 
     //alert('Post was not published.'); 
     } 
    } 
); 

FB.ui инициализируется следующим образом:

window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : '1011782388842782', 
    xfbml  : true, 
    version : 'v2.4' 
    }); 
}; 

Теперь вот реальный футболист - приведенный выше код работает просто отлично при запуске из разработчика сервер на https://dev.commonspace.scot, но ошибка «Произошла ошибка. Повторите попытку позже». встречается при совместном использовании на главном сервере.

вещи я пытался:

  • Замена выше код следующим демо-кода с сайта facebook в:

    FB.ui(
        { 
         method: 'share', 
         href: 'https://developers.facebook.com/docs/', 
        }, 
        // callback 
        function(response) { 
         if (response && !response.error_message) { 
         alert('Posting completed.'); 
         } else { 
         alert('Error while posting.'); 
         } 
        } 
    ); 
    

    Обнаружена ошибка: «Это приложение находится в демонстрационном режиме, и вы не» У меня есть разрешение на просмотр ».

  • Замена всех динамически генерируемых строк (имя, ссылка2share, изображение, описание) с предопределенным фиктивным текстом. Ошибка: «Указанный URL-адрес не разрешен конфигурацией приложения. Один или несколько указанных URL-адресов не разрешены настройками приложения. Он должен соответствовать URL-адресу веб-сайта или холста, или домен должен быть поддоменом одного из домены приложений ".

  • Добавление

    redirect_uri: 'https://www.commonspace.scot',

в качестве параметра для FB.ui. Результат: «Произошла ошибка. Повторите попытку позже».

Следующие важные параметры были определены для приложения:

  • App находится в опубликованном режиме (они удалили «песочница» AFAICT)
  • Приложение ID устанавливается с помощью мета-тег:

    <meta property="fb:app_id" content="1011782388842782" /> 
    

... и библиотека пайщик осознает идентификатор приложения.

  • Отображаемое имя и контактное письмо были установлены для приложения.
  • Было указано три домена приложения: commonspace.scot, dev.commonspace.scot, www.commonspace.scot; хотя я также пробовал только с одним доменом (commonspace.scot).
  • URL-адрес сайта установлен на «https://www.commonspace.scot/».

Важное примечание: эти ошибки довольно общие и отображаются на большей части Facebook SDK.Большинство ответов, которые я видел до сих пор, в том числе на stackoverflow, относятся к другим частям SDK, например. OAuth особенно распространен с этими конкретными ошибками. Непонятно, как, если вообще, применимые здесь ответы. Я пробовал множество таких решений, но его неясно, выбрать один конкретный, что «Callback URI/URL» будет означать в этом контексте или если это поможет. Этот вопрос относится только к диалоговому окну.

Заранее спасибо.

ответ

0

Мне было бы очень интересно узнать, есть ли у кого-нибудь объяснения, почему FB.ui работает на сайте dev, а не на производственном сайте. Такой ответ был бы очень полезен и для других людей.

В то же время, если кто-то страдает от той же самой проблемы, я в конце концов вернулся использовать/диалог/корма виджет вместо FB.ui со следующими изменениями:

var url = 'https://www.facebook.com/dialog/feed?' + 
      'app_id='+self.appId + 
      '&display=popup'+ 
      '&picture='+encodeURIComponent(picture)+ 
      '&caption='+document.domain+ 
      '&name='+encodeURIComponent(name)+ 
      '&description='+encodeURIComponent(text)+ 
      '&link='+encodeURIComponent(self.url2share)+ 
      '&href='+encodeURIComponent(self.url2share)+ 
      '&redirect_uri='+encodeURIComponent(self.url2share); 

Вы можете просмотреть полный источник или использовать библиотеку самостоятельно, используя мою вилку https://github.com/djcf/selection-sharer