facebookConnectPlugin 未定义(ngCordova,Ionic 应用程序)

Posted

技术标签:

【中文标题】facebookConnectPlugin 未定义(ngCordova,Ionic 应用程序)【英文标题】:facebookConnectPlugin is not defined (ngCordova, Ionic app) 【发布时间】:2015-03-10 11:17:07 【问题描述】:

我正在尝试将本机 fb 连接添加到我的 ionic 应用程序。

我正在使用: - 离子 - 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)

尝试了几件事,但没有任何积极的结果: - 当我构建它并在我的设备上运行它时,应用程序会显示一个空白屏幕

尝试了正常的cordova js代码:

将 $cordovaFacebookProvider 更改为 $cordovaFacebook(基于此线程: forum.ionicframework.com/t/unknown-provider-cordovaprovider/13305/3

这是另一个相关的线程,但并没有帮助我思考.. forum.ionicframework.com/t/does-ng-crodova-has-facebook-login/9163

我已经有一个原型可以在应用内浏览器中使用 fb 身份验证。但我真的很想拥有一个原生的 fb 连接功能。

【问题讨论】:

插件是否安装正确?运行ionic plugin list,或尝试重新安装插件 看起来像:com.phonegap.plugins.PushPlugin 2.4.0 "PushPlugin" com.phonegap.plugins.facebookconnect 0.11.0 "Facebook Connect" org.apache.cordova.camera 0.3.4 "相机” org.apache.cordova.console 0.2.12 “控制台” org.apache.cordova.inappbrowser 0.5.5-dev “InAppBrowser” 成功了吗?我也被这个问题困住了。 【参考方案1】:

我找到了解决这个问题的方法。

感谢这个帖子:https://github.com/driftyco/ng-cordova/issues/446

本教程:https://github.com/Wizcorp/phonegap-facebook-plugin/blob/master/platforms/browser/README.md

第一步:不要忘记你的身体后面的<div id="fb-root"></div>

第二步:我将 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 + 初始化代码:

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 调用 facebookConnectPlugin()

第三步:更改此依赖项后,不要忘记从您的 CLI 调用 bower update。

第四步:在 index.html 中包含新的 facebookblablabla.js。

可以

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

对我来说是

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

第五步:在您的 Facebook 应用中添加有效 OAuth 重定向 URI 字段: http://static.ak.facebook.com/connect/xd_arbiter/

希望它对你有用:)!

【讨论】:

给了我 TypeError:无法读取未定义的属性“browserInit” 您是否在 app.config 注入中添加了 $cordovaFacebookProvider ? app.config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider, $cordovaFacebookProvider)【参考方案2】:

我不知道是否有人仍然坚持这个问题,那么请按照我的@Alexy 提到的方法,然后编辑 'lib/facebook-connect-plugin/index.js' 文件行:

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

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

希望这会有所帮助:)

【讨论】:

这并没有真正的帮助,因为“else”子句试图加载已经(此时)确定不存在的科尔多瓦的 facebook 插件。【参考方案3】:

我的回答不是为您的问题提供解决方案,而是提供建议。

既然可以使用 HelloJS,为什么还要使用 facebook Cordova? facebook Cordova 依赖于平台,因为它运行cordova true node.js 并且不进化,所以速度要慢得多。

HelloJS 允许对各种 Oauth2 身份验证进行整数处理,包括 facebook / google / twitter / instagram ...

不用说,facebook 科尔多瓦的编译使用 facebook 密钥应用程序非常棘手。在 HelloJS 上,这只是一个您可以轻松更改的参数。

【讨论】:

对不起,基于 JS 的解决方案都有一个严重的缺点:如果用户没有通过浏览器登录,它们需要重新登录。这不是用户所期望的,并且为混合应用程序提供了令人不满意的体验:(

以上是关于facebookConnectPlugin 未定义(ngCordova,Ionic 应用程序)的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK 3.1 FacebookConnectPlugin.m 2 弃用

PhoneGap Cloud Build:正确的 facebookConnectPlugin 安装

cordova-plugin-facebook4 - 带有“未登录:您尚未登录。请登录并重试”的空白对话框

在继续之前如何以角度执行所有承诺?

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP