我试图将facebook权限对话框置于iframe中,但由于缺乏Facebook文档而没有取得多大进展,而且围绕Web的无证件黑客攻击不再有效。
news.yahoo.com做了一些我想模仿的事情。
当您点击新闻文章时,它会说登录facebook。在初始oauth对话框之后对用户进行身份验证(不要求权限),yahoo pop的另一个对话框来自yahoo URL,其中包含作为IFrame的权限对话框。
有人知道可以用什么API来实现这个目标吗?
fiddler跟踪表明yahoo URL正在调用:
使用permissions.request方法的uiserver.php端点。
当我尝试使用FB的javascript SDK执行此操作时:
FB.ui({
方法:'permissions_request',
perms:'read_stream,publish_stream,user_photos',
显示:'iframe'
},
功能(响应){
警报( “badfood”);
警报(响应);
});
它会转到另一个端点:facebook.com/dialog/permissions_request? ...
我在没有有用的调试信息的情况下从Facebook收到500服务器错误。
由于
答案 0 :(得分:1)
一些事情。
1)首先添加参数show_error=true
。这将告诉您更多关于导致错误的原因。
2)Facebook有多种方式可以显示任何对话框。在fiddler请求中,请注意display=iframe
参数。这主要用于画布应用程序,但也可用于常规iFrame显示。它会在灯箱中打开身份验证对话框。
3)尝试同步加载SDK。删除Facebook告诉您包含在body标签后面的页面顶部并使用辅助方法的Async引用。在all.js
来电之前加上fb-root
和FB.init
div标记并加载FB.ui
。
4)查看echo tool。
此工具可以打印出您的GET参数或您的。它也可以解码 在带有的Canvas应用程序中使用的signed_request参数 已启用OAuth 2.0 Beta迁移。这在调试中非常有用 画布认证。
答案 1 :(得分:0)
由于存在点击劫持的风险,因此不允许在iframe中加载身份验证/权限对话框。您认为这样做的网站与Facebook签订了特殊协议,允许他们这样做。