带有phonegap adobe build的FacebookConnect插件不起作用
Posted
技术标签:
【中文标题】带有phonegap adobe build的FacebookConnect插件不起作用【英文标题】:FacebookConnect plugin with phonegap adobe build not working 【发布时间】:2013-05-10 02:48:29 【问题描述】:我有一个正在使用 adobe build 构建的 Phonegap 项目。
我想按照这个 git / 教程页面集成 FacebookConnect:https://github.com/phonegap-build/FacebookConnect
这是我的 adobe build config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns= "http://www.w3.org/ns/widgets"
xmlns:gap= "http://phonegap.com/ns/1.0"
id= "com.TomBers.foodidapp"
version = "0.0.1">
<cordova>
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="UIWebViewBounce" value="true" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="EnableLocation" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="ShowSplashScreenSpinner" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="BackupWebStorage" value="cloud" />
<preference name="orientation" value="portrait" />
<preference name="phonegap-version" value="2.5.0" />
<content src="index.html" />
<plugins>
<plugin name="Device" value="CDVDevice" />
<plugin name="Logger" value="CDVLogger" />
<plugin name="Compass" value="CDVLocation" />
<plugin name="Accelerometer" value="CDVAccelerometer" />
<plugin name="Camera" value="CDVCamera" />
<plugin name="NetworkStatus" value="CDVConnection" />
<plugin name="Contacts" value="CDVContacts" />
<plugin name="Debug Console" value="CDVDebugConsole" />
<plugin name="Echo" value="CDVEcho" />
<plugin name="File" value="CDVFile" />
<plugin name="FileTransfer" value="CDVFileTransfer" />
<plugin name="Geolocation" value="CDVLocation" />
<plugin name="Notification" value="CDVNotification" />
<plugin name="Media" value="CDVSound" />
<plugin name="Capture" value="CDVCapture" />
<plugin name="SplashScreen" value="CDVSplashScreen" />
<plugin name="Battery" value="CDVBattery" />
<plugin name="Globalization" value="CDVGlobalization" />
<plugin name="InAppBrowser" value="CDVInAppBrowser" />
<plugin name="com.phonegap.facebook.Connect" value="com.phonegap.facebook.ConnectPlugin" />
<gap:plugin name="FacebookConnect">
<param name="APP_ID" value="133914256793487" />
</gap:plugin>
</plugins>
<access origin="*" />
</cordova>
</widget>
然后我添加了简单示例中显示的各种 javascript 剪贴画和按钮:https://github.com/phonegap-build/FacebookConnect/tree/master/example/Simple,包括:
document.addEventListener('deviceready', function()
try
alert('Device is ready! Make sure you set your app_id below this alert.');
FB.init( appId: "133914256793487", nativeInterface: CDV.FB, useCachedDialogs: false );
document.getElementById('data').innerHTML = "";
catch (e)
alert(e);
, false);
使用我更新的 appid。当我的应用加载时 - 我收到警报说设备已准备就绪!
然后我又收到 2 个警报,一个说:插件在初始化时失败。
然后说:插件在 auth.status 上失败。
我已将我的 android 调试密钥库哈希添加到 facebook + 我的开发人员设置上的应用程序。
我不知道如何从这里调试。
干杯,
安迪
【问题讨论】:
【参考方案1】:我建议您使用 inappbrowser 插件来代替...示例如下所示。 在下面的xxx处填写您的相关信息
var my_client_id = "xxxxxx", // YOUR APP ID
my_secret = "xxxxxxxxx", // YOUR APP SECRET
my_redirect_uri = "https://www.facebook.com/connect/login_success.html", // LEAVE THIS
my_type ="user_agent", my_display = "touch"; // LEAVE THIS
var facebook_token = "fbToken"; // OUR TOKEN KEEPER
var ref; //IN APP BROWSER REFERENCE
// FACEBOOK
var Facebook =
init:function()
// Begin Authorization
var authorize_url = "https://www.facebook.com/dialog/oauth?";
authorize_url += "client_id=" + my_client_id;
authorize_url += "&redirect_uri=" + my_redirect_uri;
authorize_url += "&display=" + my_display;
authorize_url += "&scope=publish_stream";
//CALL IN APP BROWSER WITH THE LINK
ref = window.open(authorize_url, '_blank', 'location=no');
ref.addEventListener('loadstart', function(event)
Facebook.facebookLocChanged(event.url);
);
,
facebookLocChanged:function(loc)
if (loc.indexOf("code=") >= 1 )
//CLOSE INAPPBROWSER AND NAVIGATE TO INDEX
ref.close();
//THIS IS MEANT TO BE DONE ON SERVER SIDE TO PROTECT CLIENT SECRET
var codeUrl = 'https://graph.facebook.com/oauth/access_token?client_id='+my_client_id+'&client_secret='+my_secret+'&redirect_uri='+my_redirect_uri+'&code='+loc.split("=")[1];
console.log('CODE_URL::' + codeUrl);
$.ajax(
url: codeUrl,
data: ,
type: 'POST',
async: false,
cache: false,
success: function(data, status)
//WE STORE THE TOKEN HERE
localStorage.setItem(facebook_token, data.split('=')[1].split('&')[0]);
,
error: function()
alert("Unknown error Occured");
);
我会添加更多注销和发布到墙上等功能。 您可以在 inappbrowser 上找到文档here
【讨论】:
我在 config.xml 中添加了:经过数小时的尝试,我终于成功了。 以下是建议的 xml 有什么问题:
标签 cordova 有误,删除它。 标签间隙:插件不进入插件标签内。 Tag plugin name="com.phonegap.facebook.Connect" 是不必要的并且可能是错误的。然后我建议检查 phonegap build 生成的 .apk 文件。如果一切正常,文件 cdv-plugin-fb-connect.js 和 facebook-js-sdk.js 应该存在于 assets/www 中。 顺便说一下,这些文件不能出现在提供的 src 中。
【讨论】:
更新:这在 android 上运行良好,但我无法在 ipad 或 ipad sim 上运行。我得到了一个不允许登录的 gapexec url(用 weinre 检查)。不幸的是,使用带有 FB 连接插件 v3.2 的 phonegap 2.9 已被证明是生产力杀手。以上是关于带有phonegap adobe build的FacebookConnect插件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 Adobe Phonegap Build 中,Deviceready 未触发
“无法下载应用程序......此时无法安装” - adobe phonegap build ios
如何开始使用带有 Durandal SPA 应用程序的 Phonegap Build?
iOS - 应用程序图标支持带有不同支持iOS版本的Phonegap Build Project的错误