FB og元数据覆盖了fb.ui对话框

时间:2017-09-25 09:28:03

标签: javascript facebook facebook-javascript-sdk

我遇到了在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中,这也不起作用。

如果有人有任何想法,我会非常感激!

由于

1 个答案:

答案 0 :(得分:0)

不再可以使用自定义/动态代码:https://developers.facebook.com/blog/post/2017/06/27/API-Change-Log-Modifying-Link-Previews/

您必须将静态URL与Open Graph标记一起使用。使用URL中的参数显示不同的标记。