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 - 带有“未登录:您尚未登录。请登录并重试”的空白对话框