2014-01-21 58 views
3

也許這是一個愚蠢的問題,但我解決不了! 我正在研究Phonegap Build,並且想爲應用添加一個Facebook登錄。 但插件似乎不工作!phonegap構建和Facebook插件

這裏是我收到的錯誤: 「Cordova Facebook Connect插件在init中失敗!」

更多信息,我的PhoneGap版本:3.1.0 和我使用水化(也許給你一個想法) 這裏是一個簡單的代碼,我用:

<html> 
    <head> 
    </head> 
    <body> 
     <button onclick="login()">Login</button> 
     <button onclick="me()">Me</button> 
     <!--<button onclick="getSession()">Get session</button>--> 
     <button onclick="getLoginStatus()">Get login</button> 
     <button onclick="logout()">Logout</button> 
     <button onclick="facebookWallPost()">facebookWallPost</button> 
     <button onclick="publishStoryFriend()">friendstory</button> 

     <div id="data">loading ...</div> 

     <!--<script src="http://localhost:8080/target/target-script-min.js#anonymous"></script> 
     <div id="fb-root"></div>--> 
     <!-- cordova --> 
     <script src="cordova.js"></script> 
     <!-- cordova facebook plugin --> 
     <script src="cdv-plugin-fb-connect.js"></script> 
     <!-- facebook js sdk --> 
     <script src="facebook-js-sdk.js"></script> 

     <script> 
      <!-- These are the notifications that are displayed to the user through pop-ups if the above JS files does not exist in the same directory--> 
      if ((typeof cordova == 'undefined') && (typeof Cordova == 'undefined')) alert('Cordova variable does not exist. Check that you have included cordova.js correctly'); 
      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.'); 

      FB.Event.subscribe('auth.login', function(response) { 
           alert('auth.login event'); 
           }); 

      FB.Event.subscribe('auth.logout', function(response) { 
           alert('auth.logout event'); 
           }); 

      FB.Event.subscribe('auth.sessionChange', function(response) { 
           alert('auth.sessionChange event'); 
           }); 

      FB.Event.subscribe('auth.statusChange', function(response) { 
           alert('auth.statusChange event'); 
           }); 

      /*function getSession() { 
       alert("session: " + JSON.stringify(FB.getSession())); 
      } 
      */ 
      function getLoginStatus() { 
       FB.getLoginStatus(function(response) { 
            if (response.status == 'connected') { 
            alert('logged in'); 
            } else { 
            alert('not logged in'); 
            } 
            }); 
      } 
      var friendIDs = []; 
      var fdata; 
      function me() { 
       FB.api('/me/friends', { fields: 'id, name, picture' }, function(response) { 
         if (response.error) { 
         alert(JSON.stringify(response.error)); 
         } else { 
         var data = document.getElementById('data'); 
         fdata=response.data; 
         console.log("fdata: "+fdata); 
         response.data.forEach(function(item) { 
              var d = document.createElement('div'); 
              d.innerHTML = "<img src="+item.picture+"/>"+item.name; 
              data.appendChild(d); 
              }); 
         } 
        var friends = response.data; 
        console.log(friends.length); 
        for (var k = 0; k < friends.length && k < 200; k++) { 
         var friend = friends[k]; 
         var index = 1; 

         friendIDs[k] = friend.id; 
         //friendsInfo[k] = friend; 
        } 
        console.log("friendId's: "+friendIDs); 
         }); 
      } 

      function logout() { 
       FB.logout(function(response) { 
          alert('logged out'); 
          }); 
      } 

      function login() { 
       FB.login(
         function(response) { 
         if (response.session) { 
         alert('logged in'); 
         } else { 
         alert('not logged in'); 
         } 
         }, 
         { scope: "email" } 
         ); 
      } 


      function facebookWallPost() { 
       console.log('Debug 1'); 
       var params = { 
        method: 'feed', 
        name: 'Facebook Dialogs', 
        link: 'https://developers.facebook.com/docs/reference/dialogs/', 
        picture: 'http://fbrell.com/f8.jpg', 
        caption: 'Reference Documentation', 
        description: 'Dialogs provide a simple, consistent interface for applications to interface with users.' 
        }; 
       console.log(params); 
       FB.ui(params, function(obj) { console.log(obj);}); 
      } 

      function publishStoryFriend() { 
       randNum = Math.floor (Math.random() * friendIDs.length); 

       var friendID = friendIDs[randNum]; 
       if (friendID == undefined){ 
        alert('please click the me button to get a list of friends first'); 
       }else{ 
        console.log("friend id: " + friendID); 
        console.log('Opening a dialog for friendID: ', friendID); 
        var params = { 
         method: 'feed', 
         to: friendID.toString(), 
         name: 'Facebook Dialogs', 
         link: 'https://developers.facebook.com/docs/reference/dialogs/', 
         picture: 'http://fbrell.com/f8.jpg', 
         caption: 'Reference Documentation', 
         description: 'Dialogs provide a simple, consistent interface for applications to interface with users.' 
        }; 
        FB.ui(params, function(obj) { console.log(obj);}); 
       } 
      } 

      document.addEventListener('deviceready', function() { 
             try { 
             alert('Device is ready! Make sure you set your app_id below this alert.'); 
             FB.init({ appId: "[myAppID]", nativeInterface: CDV.FB, useCachedDialogs: false }); 
             document.getElementById('data').innerHTML = ""; 
             } catch (e) { 
             alert(e); 
             } 
             }, false); 
      </script> 
     <div id="log"></div> 
    </body> 
</html> 

,這裏是我的配置。 xml文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<widget xmlns = "http://www.w3.org/ns/widgets" xmlns:gap = "http://phonegap.com/ns/3.3.0" id = "com.phonegap.polimiSajjad" version = "0.0.3"> 

<preference name="phonegap-version" value="3.1.0" /> 

<name>Sajjad App v0.0.4</name> 
<description>just a test app</description> 
<author href="sajjadsalehi.webadua.com" email="[email protected]">sajjad salehi</author> 
<preference name="orientation" value="portrait" /> 
<preference name="fullscreen" value="true" /> 
<preference name="exit-on-suspend" value="false" /> 
<preference name="android-installLocation" value="auto" /> 
<gap:plugin name="org.apache.cordova.device" /> 
<gap:plugin name="org.apache.cordova.camera" /> 
<gap:plugin name="org.apache.cordova.device-motion" /> 
<gap:plugin name="org.apache.cordova.geolocation" /> 
<gap:plugin name="com.phonegap.plugins.facebookconnect"> 
    <param name="APP_ID" value="[myAppID]" /> 
    <param name="APP_NAME" value="Polimi Students Market" /> 
</gap:plugin> 
<icon src="icon.jpg" /> 
</widget> 
+0

也許我錯了,在Facebook應用程序設置中設置包名! 沒有人有任何想法什麼是我應該在facebook設置上輸入的包的名稱?謝謝 –

+0

Facebook的設置中的包名稱是com.phonegap.polimiSajjad即config.xml中的widget標識的id – Bimal

回答

1

在調用任何Facebook功能之前,在頁面加載時執行以下代碼。

FB.init({ 
    appId: "your facebook id", 
    nativeInterface: CDV.FB, 
    useCachedDialogs: false, 
    status: true 
});