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 <script>
不管你信不信,这符合预期。
在deviceready
事件触发之前,插件不可用:http://docs.phonegap.com/en/3.5.0/cordova_events_events.md.html#deviceready
尝试检查生成的www/js/index.js
的onDeviceReady
中的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 项目