gpt4 book ai didi

javascript - 单击“喜欢”按钮后,我的应用程序如何请求 FB 权限?

转载 作者:行者123 更新时间:2023-11-30 18:41:47 25 4
gpt4 key购买 nike

我有一个与 Facebook 集成的网站。主页有几个很受欢迎的“赞”按钮和一个不受欢迎的登录按钮。我想将一个事件附加到“赞”按钮,这将使它们成为事实上的登录按钮 - 也就是说,除了 Facebook 正在做的一切之外,我想借此机会为我的应用请求扩展权限。

它不起作用,以下是我所知道的原因:

  1. 我正在使用以下调用监听点击: FB.Event.subscribe("edge.create", function (obj) {/* 我的回调 */});
  2. 当 Facebook 完成对点击的处理时,edge.create 事件被触发。
  3. Facebook 异步处理点击,在请求-响应周期完成期间延迟。
  4. 在此异步等待之后执行的 Javascript 代码不是同一堆栈的一部分,并且缺少用户操作所赋予的祝福。
  5. Facebook 提供的请求扩展权限的方式涉及创建一个弹出窗口,大多数现代浏览器都包含一个弹出窗口阻止程序,该程序拒绝由用户操作触发的堆栈外部调用。

此链导致在 edge.create 上触发的处理程序无法请求扩展权限。我可以想到两类解决方案:

  1. 找到一种方法来监听原始点击,而不是在 Facebook 收到点击、发送请求、接收响应并最终触发全局处理程序之后
  2. 寻找不涉及弹出窗口的备用 UI 来请求权限

我在研究中发现的任何东西都没有向我展示执行其中任何一项的简单方法。在解决方案 1 中,FBJS 提供了一个 addEventListener 方法,但据我所知,FBJS 与我的案例无关(集成在我拥有的网站上),所以我不能用它来捕捉点击。在解决方案 2 中,Facebook 自己的 FB.login 文档说明如下:

You should only call this on a user event as it opens a popup. Most browsers block popups, unless they were initiated from a user event, such as a click on a button or a link.

(来源:https://developers.facebook.com/docs/reference/javascript/FB.login/)

所以我走到了死胡同,但这似乎是一个非常人为的问题 - Facebook 是否希望我能够在单击“赞”按钮时请求权限?如果是这样,我错过了什么?如果不是,他们为什么要在 UI 层实现此限制?

最佳答案

Facebook Like 按钮存在于 <iframe> 中.因此,您无法捕获或拦截按钮的点击事件,甚至无法在 <iframe> 上产生点击事件。据我所知。

也许您可以在页面开始时显示您自己的按钮,这些按钮看起来 像 Facebook Like 按钮,然后您可以照常处理对这些按钮的点击。您可以连接它们,以便在第一次点击时请求权限,然后用实际的“赞”按钮替换所有自定义“赞”按钮。

关于javascript - 单击“喜欢”按钮后,我的应用程序如何请求 FB 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com