2

我有一个使用 adobe build 构建的 Phonegap 项目。

我想按照这个 git / 教程页面集成 FacebookConnect:https ://github.com/phonegap-build/FacebookConnect

这是我的 adobe 构建 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 + 我的开发人员设置上的应用程序中。

我不确定如何从这里调试。

干杯,

安迪

4

2 回答 2

2

我建议您使用 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 上找到文档

于 2013-05-10T06:51:31.107 回答
0

经过几个小时的尝试,我得到了这个工作。以下是建议的 xml 有什么问题:

  • 标签科尔多瓦是错误的,删除它。
  • 标签间隙:插件不会进入插件标签内。
  • Tag plugin name="com.phonegap.facebook.Connect" 是不必要的并且可能是错误的。

然后我建议检查 phonegap build 生成的 .apk 文件。如果一切正常,文件 cdv-plugin-fb-connect.js 和 facebook-js-sdk.js 应该存在于 assets/www 中。顺便说一下,这些文件不能出现在提供的 src 中。

于 2013-07-28T16:05:17.337 回答