在iframe中询问facebook权限对话框

在iframe中询问facebook权限对话框,facebook,iframe,permissions,Facebook,Iframe,Permissions,我试图将facebook权限对话框放在iframe中,但是由于缺乏facebook文档,没有取得多大进展,而且围绕web的未记录的黑客行为也不再有效 yahoo.com做了一些我想效仿的事情 当你点击一篇新闻文章时,上面写着登录facebook。在验证用户身份的初始oauth对话框(不要求权限)之后,yahoo pop的另一个对话框来自yahoo URL,其中包括作为IFrame的权限对话框 有人知道什么API可以用来实现这一点吗 fiddler跟踪表明yahoo URL正在调用: 具有perm

我试图将facebook权限对话框放在iframe中,但是由于缺乏facebook文档,没有取得多大进展,而且围绕web的未记录的黑客行为也不再有效

yahoo.com做了一些我想效仿的事情

当你点击一篇新闻文章时,上面写着登录facebook。在验证用户身份的初始oauth对话框(不要求权限)之后,yahoo pop的另一个对话框来自yahoo URL,其中包括作为IFrame的权限对话框

有人知道什么API可以用来实现这一点吗

fiddler跟踪表明yahoo URL正在调用:

具有permissions.request方法的uiserver.php端点

当我尝试使用FB的javascript SDK执行此操作时: FB.ui({ 方法:“权限\请求”, perms:'读取流,发布流,用户照片', 显示:“iframe” },
功能(响应){ 警惕(“不良食品”); 警报(响应); });

它会转到另一个端点:facebook.com/dialog/permissions\u request

我从facebook上得到一个500服务器错误,没有有用的调试信息

谢谢

一些事情

1) 首先添加参数
show\u error=true
。这将告诉您更多关于真正导致错误的原因

2) Facebook有多种方式可以显示任何对话框。在fiddler请求中,注意
display=iframe
参数。这主要用于画布应用程序,但也可用于常规iFrame显示。它会在一个lightbox中打开auth对话框

3) 尝试同步加载SDK。删除Facebook告诉您在页面顶部body标记后包含的异步引用,并使用第二种方法。在调用
fb.ui
之前,包括
all.js
fb root
div标记并加载
fb.init

4) 看看这本书

此工具可以打印出您的GET params或。它还可以解码 在具有 已启用OAuth 2.0测试版迁移。这在调试中非常有用 画布身份验证


由于存在点击劫持的风险,不允许也不可能在iFrame中加载验证/权限对话框。你所看到的网站与Facebook签订了特殊协议,允许他们这样做。

感谢@Chamilyan,原因1)我尝试在fiddler和Replay中添加show_错误,并将其添加到我的FD.ui参数列表中。除了HTTP错误500之外,我没有看到任何其他错误信息。对于2)我尝试查看此文档,但是请求凭据的初始OAuth对话框(对话框/OAuth端点)在响应头中标记了X-Frame-Options:DENY。我还没有找到一种方法将请求分为两部分——一个是要求你登录(我认为这是一个弹出窗口,不可iframe),另一个是权限请求(我想通过放置iframe来定制),如果你根本看不到FB对话框,并且得到500分。这可能是服务器端配置问题。你是说我的应用程序还是FB?我的应用程序配置非常简单。这是一个测试应用程序:应用程序ID/API密钥202489329832992应用程序机密4632bb0e995708cce6ae204109202d1e应用程序命名空间manasamanam站点URL站点域elmo.com联系电子邮件gswamina@gmail.com支持电子邮件gswamina@gmail.com应用程序描述我在谈论你的应用程序。500服务器错误表示服务器有问题。尝试删除所有FB关联并加载页面,然后查看您的用户是否仍能获得该页面。