我尝试创建一个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
deviceready
触发之前不可用,但这就让每个第三方插件的文档自己来处理了。这并不好。真的应该有一个地方事先声明 所有 插件都必须等待deviceready
。 - Devgeeks