Cordova/Phonegap:无法使Facebook Phonegap插件正常工作

5

我尝试创建一个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

尝试运行以下代码(来自问题432):

cp platforms/android/local.properties platforms/android/FacebookLib
2个回答

7

在最后一个 <script> 标签中添加:alert(typeof facebookConnectPlugin);

这样做的结果与预期相符。

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

尝试在生成的 www/js/index.js 中的 onDeviceReady 中检查 facebookConnectPlugin,而不是在立即触发的标签中进行检查。


如果在PhoneGap文档中有记录这个,那就太好了。 我没有在任何地方看到它。 - Wes
是的,它可能应该在那里的某个地方。每个核心 Cordova 插件在其文档顶部声明插件在 deviceready 触发之前不可用,但这就让每个第三方插件的文档自己来处理了。这并不好。真的应该有一个地方事先声明 所有 插件都必须等待 deviceready - Devgeeks

2

大家好,我发现了一些有关在phone gap应用中集成Facebook的新内容。不需要任何Facebook插件,您可以使用Facebook功能。为此,请使用phonegap.facebook.inappbrowser.js。使用这个js,您可以轻松访问所有Facebook功能。更多信息请访问以下网址:无需插件的Facebook集成步骤


你好,你有没有想法它是否适用于Android和iOS应用程序? - Ionut Necula
还有,是否可以获取名字的姓和名?现在我只能获取完整的名字。 - Ionut Necula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接