从Facebook应用程序调用ajax的问题

时间:2011-09-04 11:13:16

标签: javascript ajax facebook facebook-graph-api

我正在使用以下代码对我的服务器进行ajax调用 代码调用服务器,作为回报,它会获取使用相同应用程序的所有朋友的列表。

FB.getLoginStatus(function(response) {
  if (response.session) {
        uid = response.session.uid;
        access_token = response.session.access_token;
        $.getJSON(serverLink+"ajax.php?action=getFriendsApp", {token:access_token}
         ,function(data){
         var temp = data;
         if(true){
                var container = $('#friends_part_main');
                var fp = $('#friends_part');
                fp.show();
                var friends = data;
                for(var i in friends){
                    container.append('<a target="_blank" href="http://www.facebook.com/profile.php?id='+friends[i]+'">\n\
                    <img src="https://graph.facebook.com/'+friends[i]+'/picture" alt="friend" />\n\
                    </a>');     
                        }
                    }
                });
            }

如果我直接从浏览器(www.mydomain.com/app)运行此代码,则可以正常运行 但是当我从画布页面(app.facebook.com)运行它时,我得到了以下错误:

  

XMLHttpRequest无法加载   http://www.mydomain.com/src/ajax.php?action=getFriendsApp&token=AAAC0kxh1WAcBAHo3s0QaVy34mgdnCNGvrDZCvIQsZCBHZC8ovR9IuYEFlUKRqK0GgJosWAD6Embg8QrN07vivE6mOuAZAtxUD7WpySDL3wZDZD。   来源https://www.mydomain.com不被允许   访问控制允许来源。

你能弄明白为什么吗?

3 个答案:

答案 0 :(得分:3)

对我来说,我的ajax页面“ajax.php”的URL中的域和ajax-calling-page“index.php”的URL并不完全相同。 “www”错过了...... 您必须检查您的两个脚本域(调用脚本和响应脚本)是否完全相同!检查“http”与“https”,查看“https://my-domain.com”与“https://www.my-domain.com”等。 希望能帮助到你。 XXX

答案 1 :(得分:2)

您需要JSONP或允许域上的Ajax请求。您可以使用

强制它
header("Allow-Access-Control-Origin:*");

答案 2 :(得分:1)

访问控制允许来源不允许您使用XMLHttpRequest,因为Facebook通过安全https加载您的应用程序,但您只能访问http。您无法从其他sundomain,协议或端口加载。 尝试使用带回调函数的JSONP。您可以从任何地方加载Javascript代码,如果您的响应不仅包含数据,还包含回调函数,您可以从服务器(站点)的任何位置访问任何数据。