Cordova/Phonegap:无法让 Facebook Phonegap 插件工作

Posted

技术标签:

【中文标题】Cordova/Phonegap:无法让 Facebook Phonegap 插件工作【英文标题】:Cordova/Phonegap: Can't get Facebook Phonegap plugin to work 【发布时间】:2014-07-21 18:33:50 【问题描述】:

我尝试创建一个 Cordova/Phonegap 应用程序并添加 Facebook 插件,但是 alert(typeof facebookConnectPlugin);显示未定义:

sudo npm install -g cordova
cordova create hello com.example.hello HelloWorld
cd hello
cordova platform add ios
cordova -d plugin add https://github.com/phonegap/phonegap-facebook-plugin --variable APP_ID="1415347585409217" --variable APP_NAME="Test"
vi www/index.html  # Add: alert(typeof facebookConnectPlugin); to the last <script>
cordova emulate ios

预期:模拟器在警报对话框中显示“对象”。

实际:模拟器在警报对话框中显示“未定义”。

有人知道我做错了什么吗?


更新:感谢 Devgeeks 在下面的回答。

以下是我需要做的其他几件事才能使其正常工作:

1) 安装插件的新“develop”分支:

cordova -d plugin add "https://github.com/phonegap/phonegap-facebook-plugin#develop" --variable APP_ID="1415347585409217" --variable APP_NAME="Test"

2) 在开始标签下面添加以下内容:

<!-- fb-root is needed by the FB API. -->
<div id="fb-root"></div>

3) 如果您希望 FB 登录在浏览器中工作(用于测试),请将 www/js/facebookConnectPlugin.js 复制到您的应用程序中。然后将其包含在结束标记之前:

<script src="facebookConnectPlugin.js"></script>

然后将以下内容添加到您的部分:

<script>
  window.fbAsyncInit = function () 
      if (!window.cordova) 
        // Initialize - only executed when testing in the browser.
        facebookConnectPlugin.browserInit(308939305080);
      
  
</script>

如果您收到“应用程序配置不允许给定 URL。:应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是子域应用程序的域之一。”,编辑 facebookConnectPlugin.js 并将 sdk.js 更改为 sdk/debug.js 。

4) 如果您在构建 android 应用时遇到以下情况:

sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var

尝试运行以下命令(来自Issue 432):

cp platforms/android/local.properties platforms/android/FacebookLib

【问题讨论】:

【参考方案1】:

Add: alert(typeof facebookConnectPlugin); to the last &lt;script&gt;

不管你信不信,这符合预期。

deviceready 事件触发之前,插件不可用:http://docs.phonegap.com/en/3.5.0/cordova_events_events.md.html#deviceready

尝试检查生成的www/js/index.jsonDeviceReady 中的facebookConnectPlugin,而不是立即触发的标签?

【讨论】:

如果这被记录在 phonegap 文档的某个地方会很好。我在任何地方都没有看到它。 是的,它应该在里面的某个地方。每个核心 Cordova 插件都在其文档的顶部声明该插件在deviceready 触发之前将不可用,但这留给每个第三方插件的文档来做同样的事情。那不是很好。确实应该在某个地方预先声明所有插件必须等待deviceready【参考方案2】:

大家好,我在电话间隙应用程序中发现了 Facebook 集成的新功能,没有任何 Facebook 插件,您可以使用 Facebook 功能,为此使用 phonegap.facebook.inappbrowser.js 使用此 js,您可以轻松访问所有 Facebook 功能以获取更多信息信息访问此网址:Facebook Integration Step without any plugins

【讨论】:

您好,您知道它是否适用于android和ios应用程序? 另外,是否可以获取名字和姓氏?现在我只能得到全名。

以上是关于Cordova/Phonegap:无法让 Facebook Phonegap 插件工作的主要内容,如果未能解决你的问题,请参考以下文章

Cordova/Phonegap 构建无法找到 HTML 模板

让 Cordova/Phonegap 在 Genymotion 虚拟设备上进行仿真

无法在 Cordova/Phonegap 中编辑自定义 Java 插件

无法将下载的插件添加到 Cordova/Phonegap 项目

如何让 Parse.com 推送通知在 Cordova/Phonegap Android 应用程序中工作?

如何从另一个应用程序将图像共享到我的 Cordova/PhoneGap 应用程序?