FacebookConnectPlugin не определен (ngCordova, Ionic app)

Я пытаюсь добавить родной fb подключиться к моему ионному приложению.

Я использую: - Ионные - ngCordova - http://ngcordova.com/docs/plugins/facebook/

Это мой код:

angular.module('starter.controllers', ['ngCordova'])

.config(function($cordovaFacebookProvider) {
var appID = 123456789;
var version = "v2.0"; // or leave blank and default is v2.0
$cordovaFacebookProvider.browserInit(appID, version);
})

Что приводит к этой ошибке >

Uncaught Error: [$injector:modulerr] Failed to instantiate module starter due to:
Error: [$injector:modulerr] Failed to instantiate module starter.controllers due to:
ReferenceError: facebookConnectPlugin is not defined
at browserInit (http://localhost:8100/lib/ngCordova/dist/ng-cordova.js:1576:7)
at http://localhost:8100/js/controllers.js:6:30
at Object.invoke (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11994:17)
at runInvokeQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11900:35)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:11909:11
at forEach (http://localhost:8100/lib/ionic/js/ionic.bundle.js:8147:20)
at loadModules (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11890:5)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:11907:40
at forEach (http://localhost:8100/lib/ionic/js/ionic.bundle.js:8147:20)
at loadModules (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11890:5)

Пробовал пару вещей, но без какого-либо положительного результата: - Когда я его создаю и запускаю на своем устройстве, приложение отображает пустой экран

  • Пробовал обычный код кордовы js:

  • Изменен $cordovaFacebookProvider на $cordovaFacebook (на основе этой темы: forum.ionicframework.com/t/unknown-provider-cordovaprovider/13305/3

  • И это еще одна связанная нить, но мне не помогает. forum.ionicframework.com/t/does-ng-crodova-has-facebook-login/9163

У меня уже есть прототип, работающий с fb auth в браузере in-app. Но я действительно хочу иметь встроенную функциональность fb connect.

Ответы

Ответ 1

Я нашел способ решить эту проблему.

Благодаря этой теме: https://github.com/driftyco/ng-cordova/issues/446

и этот учебник: https://github.com/Wizcorp/phonegap-facebook-plugin/blob/master/platforms/browser/README.md

1-й шаг: не забывайте <div id="fb-root"></div> после тела ур.

2-й шаг: я добавил facebookConnectPlugin к моим зависимостям в баре.

Смотрите мой bower.json:

"dependencies": {
    "angular-google-maps": "~2.0.13",
    "google-map": "~0.4.1",
    "facebook-connect-plugin": "https://cdn.rawgit.com/Wizcorp/phonegap-facebook-plugin/master/facebookConnectPlugin.js"
}

См. мой код app.config + для init:

app.config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider, $animateProvider, $httpProvider, $cordovaFacebookProvider) {

var appID = 597135743751760;
var version = "v2.0"; // or leave blank and default is v2.0
$cordovaFacebookProvider.browserInit(appID, version);

$cordovaFacebookProvider call facebookConnectPlugin()

3-й шаг: после изменения этих зависимостей не забудьте вызывать обновление bower от ur CLI. bower update example

4-й шаг: включите новый файл facebookblablabla.js в свой index.html.

это может быть

<script src='bower_components/facebook-connect-plugin/index.js'></script>

для меня это было

<script src='lib/facebook-connect-plugin/index.js'></script>

5-й шаг: добавьте поле Valid UA переназначения OAuth в ваше приложение Facebook: http://static.ak.facebook.com/connect/xd_arbiter/

Надеюсь, что это сработает для вас:)!

Ответ 2

Мой ответ не предоставляет решение для вашей проблемы, но совет.

Зачем использовать facebook Cordova, когда вы можете использовать HelloJS? faceBook Cordova зависит от платформы, намного медленнее, поскольку она работает с кордорой true node.js, а не эволюционирующей.

HelloJS позволяет легко интегрировать различные аутентификации Oauth2, в том числе, facebook/google/twitter/instagram...

Нельзя сказать, что компиляция для facebook cordova очень сложна с приложением facebook key. В HelloJS это только параметр, который вы можете легко изменить.

Ответ 3

Я не знаю, если кто-то все еще придерживается этой вещи, пожалуйста, следуйте методу, упомянутому моим @Alexy, а затем отредактируйте строку файла lib/facebook-connect-plugin/index.js:

if(cordova.platformId === 'browser')

к

if(!window.cordova || (window.cordova && window.cordova.platformId === 'browser'))

Надеюсь, что это поможет:)