2016-08-01 136 views
1

我的代碼用於在測驗表單末尾動態創建Facebook Share Results按鈕。除了name設置外,代碼都可以正常工作。首先,這裏的PHP代碼:使用提要對話框發佈後,FB.ui名稱屬性被覆蓋

$ret = <<<EOT 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '{$settings_Facebook["appId"]}', 
     xfbml  : true, 
     version : 'v2.7' 
    }); 
    }; 

    (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/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    // calling the API ... 
    function postToFeed() { 
    var obj = { 
     method: 'feed', 
     redirect_uri: '{$settings_Facebook['redirect_uri']}', 
     link: '{$settings_Facebook['link']}', 
     picture: '{$settings_Facebook['picture']}', 
     name: '{$settings_Facebook['name']}', 
     caption: '{$settings_Facebook['caption']}', 
     description: '{$settings_Facebook['description']}', 
    }; 

    function callback(response) { 
     //document.getElementById('msg').innerHTML = "Post ID: " + response['post_id']; 
    } 

    FB.ui(obj, callback); 
    } 
</script> 

<div id="msg" width="100%; height: 50px;"></div> 

<div style="float: right; padding: 8px; overflow: hidden;"> 
    <a href="#" onClick="postToFeed()">Share results!</a> 
</div> 
EOT; 

上面的代碼在HTML中呈現爲:

<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '439873598753987', 
     xfbml  : true, 
     version : 'v2.7' 
    }); 
    }; 

    (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/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    // calling the API ... 
    function postToFeed() { 
    var obj = { 
     method: 'feed', 
     redirect_uri: 'https://example.com/quiz/', 
     link: 'https://example.com/quiz/', 
     picture: 'https://example.com/images/quiz-categories_0000.jpg', 
     name: 'I ranked 1 in this online quiz! Take it yourself!', 
     caption: 'EXAMPLE.COM', 
     description: 'Aliquam in magna.', 
    }; 

    function callback(response) { 
     document.getElementById('msg').innerHTML = "Post ID: " + response['post_id']; 
    } 

    FB.ui(obj, callback); 
    } 
</script> 

對於我的目的,上面的代碼和輸出是完全正確的。份額對話框會彈出一個預覽看起來正確與name場表現爲100%:

I ranked 1 in this online quiz! Take it yourself! 

但是對用戶的FB頁面發的帖子包含了name場WordPress的標語:

My site's custom tagline. 

我不能肯定正在使用標語。我稍微改變了它,並沒有影響新的Facebook帖子,但它可能被緩存在某個地方。我無法想象這個文本在哪裏配置 - 恰好也是該網站的標語。 :S

爲什麼Facebook覆蓋了我在API調用的name屬性中指定的內容?即使是通過FB設計,我該如何克服這一點?

+0

自從幾天以來,我有同樣的問題。 Facebook顯然改變了一些東西。 – Karens

+0

@Karens這是一個新的Facebook AppId和新的網站腳本。除了名稱之外,一切都在測試良好......在我的結尾它沒有工作過,所以我不確定你的問題是否與我的相關。我懷疑我的問題是Facebook上這個應用程序的配置不正確,但我沒有看到任何相關的東西。 – rwkiii

+0

我很確定它是相關的。代碼和行爲完全相同。對於我來說,它曾經工作:) 您是否嘗試向Facebook提交錯誤請求? – Karens

回答