我的代碼用於在測驗表單末尾動態創建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設計,我該如何克服這一點?
自從幾天以來,我有同樣的問題。 Facebook顯然改變了一些東西。 – Karens
@Karens這是一個新的Facebook AppId和新的網站腳本。除了名稱之外,一切都在測試良好......在我的結尾它沒有工作過,所以我不確定你的問題是否與我的相關。我懷疑我的問題是Facebook上這個應用程序的配置不正確,但我沒有看到任何相關的東西。 – rwkiii
我很確定它是相關的。代碼和行爲完全相同。對於我來說,它曾經工作:) 您是否嘗試向Facebook提交錯誤請求? – Karens