Facebook Connect с PhoneGap Build - ReferenceError: не удается найти переменную: facebookConnectPlugin

Вот ответы на вопросы и ответы, которые, надеюсь, устранят некоторую путаницу. После ознакомления с официальным файлом readme для подключаемого модуля Facebook Connect v0.4.0, который можно найти по адресу https://github.com/phonegap-build/FacebookConnect/blob/962eb0a1c07935ff813e28aa9eaa5581f2e10416/README.md, это сработало не сразу, поэтому мы установили плагин локально.

Поскольку приведенная выше вилка предназначена специально для PhoneGap Build, мы установили плагин, используя инструкции из официального репозитория плагинов по адресу https://github.com/phonegap/phonegap-facebook-plugin

Существует так много дезинформации и советов, не указывающих версию PhoneGap, плагина, если используется сборка PhoneGap и т. Д., И т. Д., Что трудно понять, как на самом деле заставить его работать.

Некоторые руководства / советы, которым мы следовали: PhoneGap добавить подключаемый модуль Facebook Connect http://pjsdev.blogspot.com/2013/03/phonegap-build-facebook-connect-part-2.html http://informatico.hol.es/blog/instalar-phonegap-facebook-plugin/ http://excellencemagentoblog.com/cordova-3-5-0-facebook-login-0-5-1-using-command-line-android

Несмотря на то, что он работал (в журнале консоли в XCode Organizer для устройства указано Cordova Facebook Connect plugin initialized successfully.), мы столкнулись с проблемой ReferenceError: Can't find variable: facebookConnectPlugin при попытке запустить версию сборки PhoneGap.


person Motin    schedule 11.07.2014    source источник


Ответы (1)


Проблема в том, что facebookConnectPlugin доступен только в v0.5.1 плагина, и мы запускали v0.4.0 при сборке с помощью сборки PhoneGap, случайно установив v0.5.1 локально.

Большая путаница прояснила:

  • Последняя версия плагина - 0.5.1, и это то, что мы установили локально.
  • Сборка PhoneGap имеет только до 0.4.0
  • Документ ссылается на код / ​​дерево по адресу 962eb0a1c07935ff813e28aa9eaa5581f2e10416 вместо тега 0.4.0 - было неясно, что это такие же
  • Между 0.4.0 и 0.5.1 способ встраивания и использования плагина кардинально изменился.

Версия 0.4.0:

Вы должны включить в свой html следующее, чтобы он работал на вашем устройстве:

<script src="cdv-plugin-fb-connect.js"></script>
<script src="facebook-js-sdk.js"></script>

Если у вас есть кодовая база, которая предназначена как для PhoneGap, так и в виде веб-приложения в браузере, обязательно включайте только вышеперечисленное при создании для PhoneGap. Чтобы заставить его работать при запуске веб-страницы как обычной веб-страницы, следуйте обычным инструкциям Facebook JS SDK от Facebook. Запустите этот код в if (!window.cordova) {}.

Пример использования:

if (typeof CDV === 'undefined') {
    alert('CDV variable does not exist. Check that you have included cdv-plugin-fb-connect.js correctly');
}
if (typeof FB === 'undefined') {
    alert('FB variable does not exist. Check that you have included the Facebook JS SDK file.');
}

// Initialize the Facebook SDK
FB.init({
    appId: 'yourappid',
    nativeInterface: CDV.FB,
    useCachedDialogs: false
});

FB.getLoginStatus(handleStatusChange);

Где handleStatusChange - это обратный вызов, который получает информацию о том, вошел ли пользователь в систему или нет.

Чтобы запросить логин, используйте FB.login () согласно официальной документации. Очень полезны примеры в дереве 0.4.0: https://github.com/phonegap-build/FacebookConnect/tree/962eb0a1c07935ff813e28aa9eaa5581f2e10416/example

Версия 0.5.1:

Плагин предоставляет window.facebookConnectPlugin при запуске на устройстве без необходимости вручную включать какие-либо js. Вы должны скопировать https://github.com/phonegap/phonegap-facebook-plugin/blob/master/www/js/facebookConnectPlugin.js в свой проект и включите его в свой html, чтобы получить аналогичный API при запуске веб-страницы в качестве обычного страница в Интернете.

Пример использования:

var fbLoginSuccess = function (userData) {
    alert("UserInfo: " + JSON.stringify(userData));
}

facebookConnectPlugin.login(["basic_info"],
    fbLoginSuccess,
    function (error) { alert("" + error) }
);

PS Некоторые советы по отладке сборок PhoneGap:

  • Используйте журнал консоли в XCode Organizer, чтобы устройство увидело вывод в console.log () в коде PhoneGap (выводит сообщения только после того, как устройство готово)
  • Используйте блоки try / catch в JavaScript, чтобы отловить и увидеть ошибки js в коде.

Чтобы установить v0.4.0 локально:

cd ~/tmp/
wget https://github.com/phonegap/phonegap-facebook-plugin/archive/0.4.0.tar.gz --no-check-certificate
tar -xvf 0.4.0.tar.gz
cordova plugin add ~/tmp/phonegap-facebook-plugin-0.4.0/ --variable APP_ID="yourfbappid" --variable APP_NAME="fb app name"
person Motin    schedule 11.07.2014
comment
Я все еще не могу заставить его работать. Не могли бы вы проверить мои действия по воспроизведению на stackoverflow.com/questions/24872249/ и сообщите мне, что я делаю не так? - person Jonathan Aquino; 21.07.2014
comment
@Motin facebookConnectPlugin.js страница не найдена - person mja; 06.07.2016
comment
@mohammed - правда. Надеюсь, кто-нибудь сможет отследить его (если он все еще существует) и отредактировать сообщение с правильной ссылкой. Я понятия не имею, куда это делось. - person Motin; 18.07.2016