【问题标题】:Getting error using Apache Cordova Facebook Plugin with ionic and angular js running on Xcode simulator使用 Apache Cordova Facebook 插件和在 Xcode 模拟器上运行的 ionic 和 angular js 时出错
【发布时间】: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


    【解决方案1】:

    我遇到了类似的情况,但我可以将用户重定向到登录页面。 我不知道这是否对你有帮助,但你看看。

    请参阅Google Firebase: Handle the social login 了解更多详情。

    我知道这是来自 Firebase 的人,但本文中有一句话非常重要:

    构建混合应用程序的最佳方式是尽可能少地处理 Cordova 的底层细节。为此,Ionic 是您最好的朋友。 Ionic 将混合开发的困难部分抽象为易于使用的 SDK。 但是,仍然存在一个难点。社交登录。使用社交提供商登录需要弹出窗口或重定向。问题是,这在原生世界中不存在。不过没关系,还有另一种方法,而且很简单。

    “简单的方法”是手动处理流程: Facebook: Handling the login flow manually

    我希望这对您有所帮助,即使您使用的是社交登录插件而我没有。

    注意:您使用的是应用内浏览器吗?

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      相关资源
      最近更新 更多