相关疑难解决方法(0)

使用"share_open_graph"Facebook UI为测验结果创建动态共享对话框

简介:我的问题是通过share_open_graph方法获取FB.ui,以根据用户在页面上的操作创建包含不同标题,描述和图片的自定义共享对话框.

问题是我的第一个,我没有声誉,所以删除了很多链接,但(感谢所有给我支持的人)我已经能够拯救最初缺失的截图.


编辑:我最后不得不使用常规弹出窗口,其中有一个共享对话框,它不是理想的,但至少它可靠地工作.我越是环顾网络,越发现许多备受瞩目的网站仍然使用像这样的弹出式共享,所以我认为在这种情况下使用传统解决方案的优势超过了寻找合适解决方案的广泛工作,我用过https://developers.facebook.com/docs/sharing/reference/feed-dialog/v2.2,通过URL查询提供的动态详细信息至少比我最初使用的sharer.php用法更新一些看着Buzzfeed.


我的页面:

我有一个测验.十个问题,每个问题五个答案,产生一个结果,将五个选项之一指定为"结果".测验的一切都很棒.当通过Ajax/jQuery完成测验时,结果会被拉入 - 这样我将来可以为其他人构建一个基于PHP的前端来管理测验的创建. 虽然我很乐意在下面的代码中提供页面URL,但很抱歉 - 在我解决此问题之前,我无法公开发布,因此您无法访问它!

我的目标:

当显示测验的结果时,它还应该具有Facebook和Twitter共享按钮,这些按钮已被定制为包括适合于用户的测验结果的图片,标题和描述.

Twitter按钮很容易动态完成

我只是使用jQuery创建一个Twitter按钮,使用与任何地方相同的HTML,我的动态描述作为data-text属性提供,然后调用twttr.widgets.load();以激活按钮.

Facebook Share按钮就是问题所在

  • 我无法添加"普通"分享按钮 - 它只需要一个属性,即URL(每个测验结果不会更改).
  • 我不能改变页面上存在的通用Open Graph标签 - 尽管jQuery可以做到这一点,Facebook的缓存意味着它毫无意义.此外,每个页面上的通用共享按钮(FB/Twitter/G +)应保持不受影响,并始终共享默认的OG标记.

所以我正在做的是创建一个链接并使用jQuery将其附加到页面,然后使用jQuery设置click触发器操作.已使用FB.init()代码块成功设置应用程序ID.这些是我为点击触发器尝试的方法:

尝试1: FB.ui({ method: "feed" })

FB.ui({
  method: 'feed',
  name: "I got "+response.country+"! Which European are you destined to date?",
  link: "http://advice.uk.match.com/quizzes/which-european-are-you-destined-date",
  picture: response.image,
  description: response.body
});
Run Code Online (Sandbox Code Playgroud)

屏幕截图显示正确的详细信息,但在旧式半工作和已弃用的Feed对话框中

基本工作 - 图片,标题和描述都与测验结果一致(在本例中为"法语") - Feed对话框不仅被弃用,而且还远远低于"共享"对话框(见下文).我想做得好.

尝试2: FB.ui({ method: "share" })

FB.ui({
  method: 'share',
  href: …
Run Code Online (Sandbox Code Playgroud)

jquery facebook facebook-graph-api facebook-javascript-sdk fb.ui

47
推荐指数
2
解决办法
3万
查看次数