在iframe中询问facebook权限对话框

时间:2012-07-16 22:49:40

标签: facebook iframe permissions

我试图将facebook权限对话框置于iframe中,但由于缺乏Facebook文档而没有取得多大进展,而且围绕Web的无证件黑客攻击不再有效。

news.yahoo.com做了一些我想模仿的事情。

当您点击新闻文章时,它会说登录facebook。在初始oauth对话框之后对用户进行身份验证(不要求权限),yahoo pop的另一个对话框来自yahoo URL,其中包含作为IFrame的权限对话框。

有人知道可以用什么API来实现这个目标吗?

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

使用permissions.request方法的uiserver.php端点。

https://www.facebook.com/connect/uiserver.php?method=permissions.request&app_id=194699337231859&display=iframe&redirect_uri=https%3A%2F%2Fopen.login.yahoo.com%2Fopenid%2Fyrp%2Fsc_check&cancel_url=https%3A%2F%2Fopen.login.yahoo.com%2Fopenid%2Fyrp%2Fsc_check&perms=user_birthday%2Cuser_likes%2Cemail%2Cpublish_actions&response_type=code&locale=en_US

当我尝试使用FB的javascript SDK执行此操作时:     FB.ui({      方法:'permissions_request',      perms:'read_stream,publish_stream,user_photos',      显示:'iframe'      },
    功能(响应){       警报( “badfood”);      警报(响应);     });

它会转到另一个端点:facebook.com/dialog/permissions_request? ...

我在没有有用的调试信息的情况下从Facebook收到500服务器错误。

由于

2 个答案:

答案 0 :(得分:1)

一些事情。

1)首先添加参数show_error=true。这将告诉您更多关于导致错误的原因。

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

3)尝试同步加载SDK。删除Facebook告诉您包含在body标签后面的页面顶部并使用辅助方法的Async引用。在all.js来电之前加上fb-rootFB.init div标记并加载FB.ui

4)查看echo tool

  

此工具可以打印出您的GET参数或您的。它也可以解码   在带有的Canvas应用程序中使用的signed_request参数   已启用OAuth 2.0 Beta迁移。这在调试中非常有用   画布认证。

http://developers.facebook.com/docs/reference/dialogs/

答案 1 :(得分:0)

由于存在点击劫持的风险,因此不允许在iframe中加载身份验证/权限对话框。您认为这样做的网站与Facebook签订了特殊协议,允许他们这样做。