Как и кнопки Share на веб-странице вызывают предупреждения javascript и ошибку php

Я добавил основные веб-страницы Facebook "Like/Share" на веб-страницу, используя код, скопированный непосредственно со страницы разработчиков Facebook. В коде есть 2 части: блок javascript и тег div с классом "fb-like" Heres the javascript:

<div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

И вот тег div, где я хочу, чтобы кнопки отображались:

<div class="fb-like" data-href="#" onclick="location.href='http://www.bethcake.com'; return false;" data-width="90" data-layout="button_count" data-action="like" data-show-faces="false" data-share="true"></div>

Вот проблемы, с которыми я сталкиваюсь:

  • Когда загружается веб-страница, я получаю 2 предупреждения javascript. Предупреждения относятся к исходному коду connect.facebook.net, строка 233, а не коду, который я написал. Это:

    • Недопустимый идентификатор приложения: должна быть числовая или числовая строка, представляющая идентификатор приложения.
    • FB.getLoginStatus() вызывается перед вызовом FB.init().
  • Также при загрузке страницы я получаю ошибку php (например .php.1: 948):

    • Заблокировано фрейм с началом " http://www.facebook.com" от доступа к кадру с исходным кодом http://www.bethcake.com". Протоколы, домены и порты должны соответствовать.

    Эта ошибка вызывает недоумение. Прежде всего, я не использую фреймы. Во-вторых, протоколы соответствуют, и ничего о портах здесь нет. Конечно, домены не совпадают: я не пытаюсь собрать "Likes" для страницы Facebook; Я хочу получить "Likes" для внешней страницы веб-сайта. Я что-то пропустил?

  • Я запустил URL-адрес через отлаживатель объектов Open Open. Это вызвало ряд предупреждений, которые я не понимаю. Это:

    • fb: admins и fb: отсутствуют теги app_id.
    • og: title, og: type и og: изображение отсутствует.
    • og: url, go: title, go: description и go: свойства изображения должны быть явно указаны

Хорошо, отлично. Но где и как я должен добавить их? Я просмотрел документацию в Facebook и без проблем выполнил поиск stackoverflow. Если они должны быть добавлены в строку data-href в теге div, пожалуйста, дайте мне пример.

Ответ 1

Я получал одинаковые предупреждения javascript, как вы упоминаете в своей первой проблеме, и добавление параметра appId в URL-адрес в коде facebook разрешало их оба. Поэтому просто измените эту строку:

js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";

to

js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=1234567891234567";

Чтобы получить приложение facebook, перейдите по ссылке: https://developers.facebook.com/apps

Ответ 2

Надеюсь, вы уже решили эту проблему.

Но если это помогает кому-то, этот ответ помогает вызвать вызванный "FB.getLoginStatus()", прежде чем вызывать FB.init() "- > fooobar.com/questions/130115/...

Ответ 3

Поскольку @smohajer указал выше, вам нужно добавить appId, но с новым SDK вам нужно внести небольшие изменения, иначе вы увидите некоторые ошибки или предупреждения:

js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=1234567891234567&version=v2.2";

Вам нужно будет обновить до 30 апреля 2015 года: https://developers.facebook.com/docs/apps/upgrading

Ответ 4

Вот что сработало для меня (нашел мой ответ здесь http://developwithguru.com/solve-invalid-app-id-must-be-a-number-or-numeric-string-representing-the-application-id/)

В принципе, 1) перейти на страницу разработчика 2) создать новое приложение 3) получить идентификатор 4) применить id к вашему коду....g(js.src= "//connect.facebook.net/en_US/all.js#xfbml=1&appId=16digIdHere";)