2

我试图将 facebook 权限对话框放在 iframe 中,但由于缺乏 Facebook 文档而没有取得太大进展,并且围绕网络的无证黑客不再起作用。

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

当您单击新闻文章时,它会显示使用 facebook 登录。在初始 oauth 对话框对用户进行身份验证(不请求权限)之后,雅虎弹出来自雅虎 URL 的另一个对话框,其中包含作为 IFrame 的权限对话框。

有人知道可以使用哪些 API 来完成此操作吗?

提琴手跟踪表明雅虎 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({ method: 'permissions_request', perms: 'read_stream,publish_stream,user_photos', display: 'iframe' },
function(response){ alert("badfood") ; 警报(响应); });

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

我从 facebook 收到 500 个服务器错误,但没有有用的调试信息。

谢谢

4

2 回答 2

1

一些事情。

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

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

3)尝试同步加载SDK。删除 Facebook 告诉您在页面顶部的正文标记后包含的异步引用,并使用辅助方法。包括all.jsand fb-rootdiv 标签并在您调用FB.init之前加载。FB.ui

4)检查回声工具

这个工具可以打印出你的 GET 参数或你的 . 它还可以解码已启用 OAuth 2.0 Beta 迁移的 Canvas 应用程序中使用的 signed_request 参数。这在调试 Canvas 身份验证时非常有用。

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

于 2012-07-17T00:13:53.260 回答
0

由于存在点击劫持的风险,不允许也不可能在 iframe 中加载 auth/permissions 对话框。您看到正在执行此操作的站点与 Facebook 签订了允许他们执行此操作的特殊协议。

于 2012-07-23T03:44:52.183 回答