【问题标题】:Asking facebook permissions dialog inside iframe在 iframe 中询问 facebook 权限对话框
【发布时间】:2012-07-15 20:32:34
【问题描述】:

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

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

当您单击新闻文章时,它会显示使用 facebook 登录。在初始 oauth 对话框对用户进行身份验证(不请求权限)之后,雅虎弹出来自 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', 烫发:'read_stream,publish_stream,user_photos', 显示:'iframe' },
功能(响应){ 警报(“坏食物”); 警报(响应); });

它转到不同的端点:facebook.com/dialog/permissions_request? ...

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

谢谢

【问题讨论】:

    标签: facebook iframe permissions


    【解决方案1】:

    一些事情。

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

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

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

    4) 查看echo tool

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

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

    【讨论】:

    • 感谢@Chamilyan,1)我尝试在提琴手中添加 show_error 并重播并将其添加到我的 FD.ui 参数列表中。除了 HTTP 错误 500,我没有看到任何其他错误信息。
    • 对于 2) 我尝试浏览此文档,但请求凭据的初始 OAuth 对话框(对话框/oauth 端点)在响应标头中标记了 X-Frame-Options: DENY。我还没有找到一种将请求分成两部分的方法 - 一个要求您登录(我可以作为弹出窗口而不是 iframeable)和权限请求(我想通过放置 iframe 来自定义)
    • 好吧,如果您根本看不到 FB 对话框并且获得 500。这可能是服务器端配置问题。
    • 你的意思是我的应用程序还是一般的FB?我的应用程序配置非常简单。它是一个测试应用程序:应用程序 ID/API 密钥 202489329832992 应用程序密钥 4632bb0e995708cce6ae204109202d1e 应用程序命名空间 manasamanam 站点 URL elmo.com:4321 站点域 elmo.com 联系电子邮件 gswamina@gmail.com 支持电子邮件 gswamina@gmail.com 应用程序描述
    • 我在谈论你的应用。 500 server error 表示服务器有问题。尝试删除所有 FB 关联并加载页面,看看你是否仍然得到它。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多