Facebook 身份验证对话框(JS SDK)返回空白屏幕

2024-01-03

我正在设置一个 Rails 应用程序并尝试通过 Facebook JS SDK 实现登录。已经缺少 Omniauth...:(

无论如何,发生的情况是弹出对话框,用户提供登录信息,但随后它重定向到https://www.facebook.com/connect/window_comm.php?_id=some-string&_relation=opener&auth_token=some-big-string,空白屏幕。弹出窗口不会关闭。

不过,如果我手动关闭它,然后刷新页面,我可以看到登录发生了。

奇怪的是,在第一次登录时,当请求权限时,一切都按预期进行,弹出窗口在授予或拒绝权限后关闭。

在 Chrome、FF、Safari 和 Opera 上进行了测试。行为一致。

如果我在 Chrome 上调试空白重定向页面,会出现两个错误:

1) Unsafe JavaScript attempt to access frame with URL http://something from frame with URL https://something. Domains, protocols and ports must match.(注意http x https...)

2) window_comm.php:7Uncaught TypeError: Cannot call method '_recv' of undefined

这是相关代码:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'my-app-id',
      status     : true,
      channelURL : 'http://localhost:3000/channel.html',
      cookie     : true,
      oauth      : true,
      xfbml      : true
    });

    FB.Event.subscribe('auth.login', function(response) {
      window.location.reload();
    });
  };
  (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/pt_BR/all.js"
    fjs.parentNode.insertBefore(js, fjs); 
    } 
    (document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-login-button" data-show-faces="true" data-width="400" data-max-rows="1" perms="offline_access"></div>

非常感谢您对此的任何启发...让我发疯! =(

编辑:这可能是 Facebook 上的一个错误吗,因为它从 http 重定向到 https?


这仅回答问题 1)。 Facebook 新要求:-

  • 切换到 Oauth 2.0 以获取令牌访问权限
  • 使用 SSL(即:https://)进行身份验证(因此存在跨域问题)

另外,我通常会从下面的代码开始,找出登录过程中可能的用户状态。这意味着在测试阶段点击任何东西。

FB.Event.subscribe('auth.authResponseChange', function(response) {
    alert('The status of the session is: ' + response.status);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook 身份验证对话框(JS SDK)返回空白屏幕 的相关文章

随机推荐

  • 为什么我丢失了会话变量?

    我使用 MVC 并使用 KnockoputJS 我从 2 个选择中选择值 在第一个选择中 我选择 IDCompany 在第二个选择中 我选择 IDSubsidiary 我将 Json 中的模型发送到控制器中的 JsonResult 然后创建
  • 为什么经典的 ASP 服务器端包含包含在注释中?

    为什么服务器端包含的语法是 将语义上有意义的内容放在注释中似乎很尴尬且具有误导性 事实上 当我第一次看到这种语法时 我认为它是一个已被 注释掉 的包含内容 设计语言使用这种语法而不是像这样的替代方案背后的原因是什么 我知道用简单的替换来解析
  • 从服务器发送文件到客户端(python)

    我目前正在编写一个服务器客户端应用程序 需要传输一些文件才能工作 我正在使用这个方法 client file to send raw input gt try f open sent files file to send rb except
  • 如何避免工具提示中出现阴影?

    我开发了一个 ToolTip 控件 并将其注册为 ToolTip 代码如下 protected override CreateParams CreateParams get CreateParams param base CreatePar
  • Rails - 警告:无法批量分配受保护的属性

    从这里继续 Rails 表单问题 https stackoverflow com questions 6058486 rails form problems 每次我尝试创建一个新的group membership我明白了 WARNING C
  • Rails db:种子错误“未定义方法‘finder_needs_type_condition?’对于 nil:NilClass"

    我在尝试填充 sqlite 数据库时遇到问题 关于特定错误 finder needs type condition 的信息不多 我可以找到 但我没有太多使用 Rails 的经验 甚至怀疑问题可能出在哪里 Model class Charac
  • 如何使用Android相机获取全分辨率和未压缩的图像数据?

    我想获得全分辨率 而不是压缩 图像数据 然后我可以进行一些图像处理 据我所知 android api takePicture shutter raw jpg 可以做一些事情 但是我需要的不是压缩的 JPEG 数据 而是未压缩的图像数据 而且
  • 有没有 StringUtils.isNumeric 的替代方案可以实现我的意思?

    StringUtils isNumeric 对于 返回 true 对于 7 8 返回 false 这当然是有记录的行为 但对我来说确实不是最方便的 还有其他东西 最好是在 commons lang 中 提供 isActuallyNumeri
  • 如何降低firebase实时数据库下载成本? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在firebase实时数据库中制作2个数据库是否有助于降低成本并增加每天360MB的每日下载限制 降低成本最简单的方法是减少下载 你可
  • 在 JasperReports 中进行比较 if else

    我想做一个比较 例如 if
  • Order by 不适用于 LINQ 中的 Concat()

    使用 VB net 和以下 LINQ 语句 我怀疑 排序依据 不适用于Concat 我想列出用户当前拥有的项目 然后按升序列出更多可用项目 因此 首先我从数据库中选择当前项目 然后按顺序选择下一个可用项目 LINQ 忽略 order by
  • 如何在 Mac 上将 localhost 绑定到 127.0.0.1? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的本地计算机上有一个正在运行的 Web 应用程序 要访问它 我可以使用localhost 8080 但是当我尝试使用http 127 0
  • MVC3中提交数据库数据后如何清除模型

    我正在数据库中提交一些数据 提交后我想显示同一页面 但我正在查看页面 文本框值不为空 ModelState Clear 我曾经用来清除文本框 但文本框值仍然保留 请建议我在mvc3中提交后清除模型 public ActionResult A
  • 重置 DBUnit 中的序列?

    我想在 Java DBUnit 中的每次测试后重置数据库 AND 序列 我已经看到这个问题 但没有我正在努力获得的代码解决方案 如何在DBUnit中使用Oracle序列号 https stackoverflow com questions
  • 在 ruby​​ 类中调用 Knife

    我想围绕刀创建一个很好的包装类 以允许程序以可读的方式运行刀命令 我目前正在尝试使用 Chef gem 中的 Knife rb 文件作为取得成功的指南 但是 我在关闭编辑器时遇到问题 如果我运行以下代码 require chef knife
  • 过滤数据集

    我有一个充满客户的数据集 我想知道是否有任何方法可以过滤数据集并仅获取我想要的信息 例如 要得到CostumerName and CostumerAddress对于有的客户CostumerID 1 是否可以 您可以使用DataTable S
  • Twitter Bootstrap - 如何根据 @media 定义的宽度更改 css 类

    这是我的第一个问题 但我只想说这个网站多年来帮助了我无数次 我想我已经到了有自己的问题要问的阶段了 抱歉 如果问题不清楚 我会尝试详细说明 我已经为我的一些元素分配了一个过渡 这样当它们悬停在上面时它们就会向上升起 即 example ho
  • Python 使用 Beautiful Soup 对特定内容进行 HTML 处理

    所以当我决定解析网站的内容时 例如 http allrecipes com Recipe Slow Cooker Pork Chops II Detail aspx http allrecipes com Recipe Slow Cooke
  • 如何在 Python 中处理命令行参数? [复制]

    这个问题在这里已经有答案了 如果我期望像 001 或 999 这样的东西 这次让我们将期望限制在 001 999 范围 并且传递的其他参数很少 并且希望忽略任何意外的参数 那么处理命令行参数的简单表达式是什么 我知道 例如 如果我需要查明
  • Facebook 身份验证对话框(JS SDK)返回空白屏幕

    我正在设置一个 Rails 应用程序并尝试通过 Facebook JS SDK 实现登录 已经缺少 Omniauth 无论如何 发生的情况是弹出对话框 用户提供登录信息 但随后它重定向到https www facebook com conn