私のコードは、クイズフォームの最後に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>
私の目的のために、上記のコードと出力は正確に正しいです。
I ranked 1 in this online quiz! Take it yourself!
しかし、ユーザーのFBページに追加されたポストがname
フィールドにWordPressのキャッチフレーズが含まれています:
My site's custom tagline.
共有]ダイアログボックスがとして表示されて
name
フィールドで100%正しいようプレビューをポップアップ表示します
タグラインが使用されているという私には肯定的ではありません。私は少しそれを変更し、それは新しいFacebookの投稿には影響しませんでしたが、それはどこかにキャッシュされるかもしれません。私はこのテキストがどこに設定されているのか考えることはできません - ちょうどサイトのタグラインにも起こります。 :S
なぜFacebookはAPI呼び出しのname
プロパティで指定したものを上書きしていますか?たとえそれがFBデザインであっても、これをどのように克服するのですか?
私は数日から同じ問題を抱えています。どうやらFacebookは何かを変えたようだ。 – Karens
@Karensこれは新しいFacebook AppIdと新しいウェブサイトのスクリプトです。すべてが名前の例外を除いて良好にテストされています...私の目的のためにこれまで働いたことがないので、あなたの問題が私のものに関係しているかどうかわかりません。私は、私の問題は、このアプリのためFacebook上で何かが正しく設定されていないことだと思うが、私は関連性があるとは思わない。 – rwkiii
私はそれが関係していると確信しています。コードと動作はまったく同じです。違いがあって、それは私が働いていたのです:) Facebookにバグリクエストを提出しようとしましたか? – Karens