【发布时间】:2015-11-25 07:16:24
【问题描述】:
要求:
我正在尝试使用 Ionic、Apache Cordova、Angular Js 和 Parse 构建一个移动应用程序。该应用程序的功能之一是 - 假设让用户使用 Facebook 登录(使用本机应用程序或基于浏览器的登录)。用户将单击“登录”页面上的“使用 Facebook 登录”按钮,这假设打开本机 Facebook 应用程序(如果已安装)或浏览器以重定向到 Facebook 登录页面进行身份验证。一旦通过身份验证,用户应该能够在应用程序中执行进一步的操作。
问题: 在 Xcode 模拟器中单击我的应用程序中的“使用 Facebook 登录”按钮时出现以下错误。
ReferenceError:找不到变量:facebookConnectPlugin
到目前为止我做了什么?
1) 创建了必要的 HTML 文件,其中包含登录按钮、角度 js 控制器和用于身份验证流程的服务。
2) 按照以下链接中提到的 Facebook 身份验证部分的说明进行操作。
https://ionicthemes.com/tutorials/about/native-facebook-login-with-ionic-framework
3)根据上面的文章,将插件克隆到本地目录,然后使用cordova命令将插件安装到app目录下。 根据文章,我从这个 git URL 获得了插件。 https://github.com/Wizcorp/phonegap-facebook-plugin
4) 插件安装似乎成功。在终端上没有看到任何错误。我也可以看到插件文件夹,但它似乎有一个名为“phonegap-facebook-plugin”的文件夹,而不是 com.phonegap.plugins.facebookconnect。如果您不明白我的意思,请参阅上面文章中的 cmets。不确定这是否与我的问题有关。
5) 使用 ionic build ios 命令构建应用程序。
6) 在 Xcode 中打开 platform/ios 文件夹中的 xcodeproj 并在 Xcode 模拟器上运行应用程序。
7) 当我点击“使用 Facebook 登录”按钮时,我收到上面问题部分中提到的“找不到变量:facebookConnectPlugin”。
8) 在 app.js 的 run 方法中添加了以下代码。为了这篇文章,我已经从下面的代码中删除了实际的 parseid,fbids。
myApp.run(function ($ionicPlatform,$rootScope,$state) {
$ionicPlatform.ready(function () {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
Parse.initialize("parseappid", "parsejskey");
if (!(ionic.Platform.isIOS() || ionic.Platform.isAndroid())) {
window.fbAsyncInit = function () {
Parse.FacebookUtils.init({
appId: 'fbappid',
version: 'v2.5',
xfbml: true
});
};
(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/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
} (document, 'script', 'facebook-jssdk'));
}
});
9) 在 index.html 文件的正文之后添加以下内容。
10) 我什至尝试通过将此 js 文件从插件目录复制到我的 js 目录 (www\js) 中手动添加对 facebookConnectPlugin.js 的引用(作为插件安装的一部分安装),正如一些文章中建议的那样互联网,但似乎没有任何效果。
我有什么困惑?
1) 我是否还需要在我的 index.html 中引用 cordova.js?我只引用了 ng-cordova.js。 2) facebookConnectPlugin 是否可以在 Xcode 模拟器中工作?
我正在使用的开发环境
Mac OS X Yesomite、Visual Studio Code、Safari/Chrome、Xcode (v7.1.1)
主要使用 Xcode 模拟器和 Safari Develop 进行测试
【问题讨论】:
标签: ios angularjs facebook cordova ionic