我遇到了在FB上分享动态内容以进行测验的问题。我使用的方法与过去相似,但这次不起作用。看来,og元数据正在覆盖我想要从FB.ui方法内的对象添加的数据。
所以我在html页面中启动FB并添加SDK:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'app_id',
cookie : true,
status : true,
xfbml : true,
oauth : true,
version : 'v2.10'
});
FB.AppEvents.logPageView();
};
(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 = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
然后我添加了一个结果分享按钮:
<div class="social-btn" id="fb-shareBtn-results">
<i class="fa fa-facebook-square" aria-hidden="true"></i>
<span>Share</span>
</div>
然后在我的js文件中,我有一个方法,该方法包含我绑定到结果共享按钮的事件监听器,如下所示:
var quiz = {
score_tracker: 0,
facebookShare: function() {
document.getElementById('fb-shareBtn-results').onclick = function() {
FB.ui({
method: 'feed',
name: 'Quiz name',
title: 'I scored ' + quiz.score_tracker + ', can you beat me!?',
description: 'A fun quiz',
link: 'http://link-to-quiz/index.html',
picture: 'http://link-to-quiz/assets/img.png',
link: 'http://link-to-quiz/index.html',
}, function (response) {});
};
},
init: function(){
sf_quiz.facebookShare();
}}
当我点击测验结尾处的分享按钮时,它会打开fb共享对话框,但会输入og元数据...我不知道为什么。我也尝试构建网址并将其添加到链接的href中,这也不起作用。
如果有人有任何想法,我会非常感激!
由于
答案 0 :(得分:0)
不再可以使用自定义/动态代码:https://developers.facebook.com/blog/post/2017/06/27/API-Change-Log-Modifying-Link-Previews/
您必须将静态URL与Open Graph标记一起使用。使用URL中的参数显示不同的标记。