javascript - Facebook 是否可以获取用户数据并在 iframe 中填充表单?

标签 javascript jquery facebook iframe facebook-iframe

我正在尝试为 Facebook 页面创建一个 iframe 选项卡。

在这个页面上,我正在加载一个 iframe,它由来自另一个域/站点的表单组成。

是否可以使用 javascript 查询图形 api,以使用 javascript 将用户数据加载到此 iframe 加载表单中,这样就可以预先填充给用户?

我知道存在跨域安全问题。在那种情况下,假设我的 iframe 选项卡现在托管在与 iframe 加载的表单相同的域中,这现在可行吗?

最佳答案

你是对的,出于安全原因(同源策略),你想要的将被浏览器阻止。

你可以做什么:

  1. 在 iframe 中重新加载表单并将您从 js sdk 获取的数据传递给它,您甚至可以将数据 POST 到 iframe(就像 facebook 对 Canvas 应用所做的那样)。

  2. 您应该可以更改 iframe 的位置,但只能更改哈希部分(片段),这不会导致 iframe 重新加载。
    在 iframe 中注意位置变化并从片段中提取数据。
    问题是这种方法可能会弄乱浏览器历史记录。

  3. 寻找另一个跨域通信的解决方案,也许easyXDM ?


编辑

这里是第一个选项的两个实现:

1) 使用 GET

<iframe id="userform"></iframe>

<script type="text/javascript">
    // load and init FB JS SDK

    FB.api("me", function(response) {
        document.getElementById("userform").src = USER_FORM_URL + "?name=" + response.name;
    });
</script>

2) 在 iframe 中使用 POST

<form method="POST" action="USER_FORM_URL" target="userform" id="postForm">
    <input type="hidden" name="fbResponse" id="fbResponseInput" />
</form>

<iframe name="userform"></iframe>

然后,在 iframe 本身上,获取数据(从 GET 或 POST)并相应地呈现用户表单。

<script type="text/javascript">
    // load and init FB JS SDK

    FB.api("me", function(response) {
        document.getElementById("fbResponseInput").value = JSON.stringify(response);
        document.getElementById("postForm").submit();
    });
</script>

关于javascript - Facebook 是否可以获取用户数据并在 iframe 中填充表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713026/

相关文章:

javascript - 如何禁用bind方法中的函数执行?

javascript - jQuery "array"返回未定义

web-applications - Facebook 应用程序、Iframe 的烦恼(URL 问题)

javascript - 如何在 Imacros 中每 6 次迭代后转到新行

javascript - 如何在 jQuery 中移动 HTML 元素?

javascript - JQuery 无法在 "forwards"css 动画后对 div 进行动画处理

javascript - 如何使 jQuery `bind` 或 `on` 事件处理程序幂等

ruby - 如何使用 ruby​​ fb_graph 发布 Facebook 页面更新?

iphone - Facebook:无法将图片发布到 Feed

javascript - 单击按钮即可显示表格