【问题标题】:Javascript not running on Facebook iframeJavascript 未在 Facebook iframe 上运行
【发布时间】:2013-12-19 18:10:09
【问题描述】:

我有一个用于 facebook 应用程序的 django 项目。在项目中,邀请好友模块在localhost中运行良好!

但是当它被加载到 facebook 应用程序中时,负责显示朋友列表的 javascript 不起作用。尽管库已正确加载。

我不知道为什么会这样。可能是一些 iframe 问题。 这是 javascript 代码

<script type="text/javascript"> 
window.fbAsyncInit = function() {
    FB.init({appId: '460948667348013', cookie: true});

    FB.getLoginStatus(function(response) {
      if (response.status === 'connected') {
         FB.api('/me', function(response) {
           // alert('Your name is ' + response.name);
           console.log('Your name is ' + response.name);
          init();
         });
      } else if (response.status === 'not_authorized') {
        alert('the user is logged in to Facebook, but has not authenticated your app');
      } else {
        alert('the user is not logged in to Facebook.');
      }
     });  
}
    function init() {
      FB.api('/me', function(response) {
          $("#username").html("<img src='https://graph.facebook.com/" + response.id + "/picture'/><div>" + response.name + "</div>");       
          $("#jfmfs-container").jfmfs({ 
              max_selected: 15, 
              max_selected_message: "{0} of {1} selected",
              friend_fields: "id,name,last_name",
              pre_selected_friends: [1014025367],
              exclude_friends: [1211122344, 610526078],
              sorter: function(a, b) {
                var x = a.last_name.toLowerCase();
                var y = b.last_name.toLowerCase();
                return ((x < y) ? -1 : ((x > y) ? 1 : 0));
              }
          });
          $("#jfmfs-container").bind("jfmfs.friendload.finished", function() { 
              window.console && console.log("finished loading!"); 
          });
          $("#jfmfs-container").bind("jfmfs.selection.changed", function(e, data) { 
              window.console && console.log("changed", data);
          });                     

          $("#logged-out-status").hide();
          $("#show-friends").show();
      });
    }              

    $("#show-friends").live("click", function() {
        var friendSelector = $("#jfmfs-container").data('jfmfs');             
        $("#selected-friends").html(friendSelector.getSelectedIds().join(', ')); 
    });                  
    function sendRequest() {
       var friendSelector = $("#jfmfs-container").data('jfmfs');
       var sendUIDs = friendSelector.getSelectedIds().join(', '); 
       // Use FB.ui to send the Request(s)
       FB.ui({method: 'apprequests',
         to: sendUIDs,
         title: 'My Great Invite',
         message: 'Check out this Awesome App!',
       }, callback);
     }
     function callback(response) {
        // alert('callback called');
       var friendSelector = $("#jfmfs-container").data('jfmfs');
       var sendUIDs = friendSelector.getSelectedIds().join(','); 
       var uids = sendUIDs.split(',');
       var query = '';
       for(i=0;i<uids.length;i++){
        if(i==0){
            query =  query + 'to[' + i + ']=' + uids[i];
        }
        else{
        query =  query + '&to[' + i + ']=' + uids[i];
        }
       }
       console.log(query);
       if(response){
        // alert('successful');
        window.location.assign("/?"+ query)
       }
       else{
        alert('failure');
       }

     }

  </script> 

请帮忙!我被这个问题困住了。

【问题讨论】:

    标签: javascript facebook iframe facebook-javascript-sdk facebook-iframe


    【解决方案1】:

    问题可能是 SSL 问题。

    Facebook 在几个月前做出了许多改变。

    您还需要随时关注 Facebook 开发者博客。

    所以我将尝试解释一些我怀疑的事情。

    Facebook 上的应用

    1. 您的画布页面应为https://apps.facebook.com/yourchoosenname

    1a。您的 Canvas URL 应为 https://yoursite.com/yourapplication/

    网站

    http://yoursite.com/

    页面标签

    1. 您的安全画布应为https://yoursite.com/yourapplication/

    2. 您的页面标签网址应为https://yoursite.com/yourapplication/

    3. 您的安全页面标签 URL 应为 https://yoursite.com/yourapplication/

    在这种情况下,您需要网站的 SSL 证书,以便您可以从 Here 找到可靠且便宜的数字证书。

    任何应用程序都必须在 facebook 上运行。

    希望这对您和其他人有所帮助

    【讨论】:

    • 我的 facebook 应用程序现在处于沙盒模式,并且画布 url 只有 http。所以,这意味着如果画布 url 是 https,脚本就可以工作?
    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多