这是一个自我回答的Q& A,希望能够解决一些混乱。在关注Facebook Connect plugin v0.4.0的官方自述文件之后 在https://github.com/phonegap-build/FacebookConnect/blob/962eb0a1c07935ff813e28aa9eaa5581f2e10416/README.md找到它,它不能立即工作,所以我们在本地安装了插件。
由于以上是专门针对PhoneGap Build的分支,我们使用来自https://github.com/phonegap/phonegap-facebook-plugin的官方插件仓库的说明安装了该插件
有很多错误信息和建议没有说明PhoneGap的版本,插件,如果使用PhoneGap构建等等,很难理解如何让它真正起作用。
我们遵循的一些指南/提示: PhoneGap add Facebook Connect plugin http://pjsdev.blogspot.com/2013/03/phonegap-build-facebook-connect-part-2.html http://informatico.hol.es/blog/instalar-phonegap-facebook-plugin/ http://excellencemagentoblog.com/cordova-3-5-0-facebook-login-0-5-1-using-command-line-android
尽管做了一些工作(控制台登录XCode Organizer中的设备陈述Cordova Facebook Connect plugin initialized successfully.
),但每当试图运行PhoneGap构建版本时,我们都会遇到ReferenceError: Can't find variable: facebookConnectPlugin
的问题。
答案 0 :(得分:7)
问题是facebookConnectPlugin仅在插件的v0.5.1中可用,我们在使用PhoneGap构建进行构建时运行v0.4.0,同时在本地意外安装了v0.5.1。
大混乱直截了当:
版本0.4.0:
您应该在html中包含以下内容,以使其在您的设备上运行:
<script src="cdv-plugin-fb-connect.js"></script>
<script src="facebook-js-sdk.js"></script>
如果您的代码库同时适用于PhoneGap和浏览器中的Web应用程序,请务必在构建PhoneGap时仅包含上述内容。要使网页作为普通网页运行时,请遵循Facebook的普通Facebook JS SDK说明。在if (!window.cordova) {}
中运行该代码。
使用示例:
if (typeof CDV === 'undefined') {
alert('CDV variable does not exist. Check that you have included cdv-plugin-fb-connect.js correctly');
}
if (typeof FB === 'undefined') {
alert('FB variable does not exist. Check that you have included the Facebook JS SDK file.');
}
// Initialize the Facebook SDK
FB.init({
appId: 'yourappid',
nativeInterface: CDV.FB,
useCachedDialogs: false
});
FB.getLoginStatus(handleStatusChange);
其中handleStatusChange
是一个回调,它接收有关用户是否登录的信息。
要提示登录,请根据官方文档使用FB.login()。 0.4.0树中的示例非常有用:https://github.com/phonegap-build/FacebookConnect/tree/962eb0a1c07935ff813e28aa9eaa5581f2e10416/example
版本0.5.1:
插件在设备上运行时会公开window.facebookConnectPlugin而无需手动包含任何js。您应该将https://github.com/phonegap/phonegap-facebook-plugin/blob/master/www/js/facebookConnectPlugin.js复制到项目中并将其包含在您的html中,以便在将网页作为普通网页运行时获得类似的API。
使用示例:
var fbLoginSuccess = function (userData) {
alert("UserInfo: " + JSON.stringify(userData));
}
facebookConnectPlugin.login(["basic_info"],
fbLoginSuccess,
function (error) { alert("" + error) }
);
PS PhoneGap构建的一些调试技巧:
在本地安装v0.4.0:
cd ~/tmp/
wget https://github.com/phonegap/phonegap-facebook-plugin/archive/0.4.0.tar.gz --no-check-certificate
tar -xvf 0.4.0.tar.gz
cordova plugin add ~/tmp/phonegap-facebook-plugin-0.4.0/ --variable APP_ID="yourfbappid" --variable APP_NAME="fb app name"