我正在尝试在我的页面上创建的IFRAME中打开facebook身份验证页面 但问题是,一旦页面被加载到iframe中,我点击iframe,facebook身份验证页面将在整个屏幕中获取整个页面,iframe将消失。
https://graph.facebook.com/oauth/authorize?client_id=<id>&type=user_agent&redirect_uri=http://localhost:3662/test.web/pages/z.aspx&display=popup
这是我的网址,我在iframe src属性中设置
答案 0 :(得分:2)
我自己就碰到了这个。我用过的解决方案?
粗略的步骤
// trigger this any way you want
window.open(
'https://graph.facebook.com/oauth/authorize?client_id=CLIENT_ID&display=popup&scope=PERM_LIST&redirect_url=http://example.com/oauth_redirect'
, 'authorize'
, 'width=600,height=350'
);
这会在弹出窗口中显示身份验证窗口。现在,下一步是您使用重定向网址(在我的示例中为http://example.com/oauth_redirect
)
URL中的access_token参数包含OAuth令牌 - 因此检索它并执行您需要的任何操作(存储在cookie中,无论如何)。然后使用JS来控制弹出窗口和开启器
的内容<script type="text/javascript">
// Perhaps load the next page?
window.opener.location = 'http://example.com/canvas'
// close the popup
window.close();
</script>
答案 1 :(得分:0)
不确定,但我认为“popup”外形适用于真正的弹出窗口,你应该尝试“页面”外形因素
答案 2 :(得分:0)
这是一种安全机制;用户几乎没有办法判断你的IFRAME是否真的是Facebook,或者你呈现的东西看起来像Facebook。在顶部有一个完整的URL,这变得更加透明(是的,他们应该使用有效的证书来实现SSL以真正证明这一点,但是嘿)。
答案 3 :(得分:0)
出于安全原因,不允许以iframe登录。请改用弹出窗口。您可以使用window.open
建议Peter或使用JS SDK,例如:http://fbrell.com/auth/all-in-one。