2016-08-01 3 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> 

私の目的のために、上記のコードと出力は正確に正しいです。

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デザインであっても、これをどのように克服するのですか?

+0

私は数日から同じ問題を抱えています。どうやらFacebookは何かを変えたようだ。 – Karens

+0

@Karensこれは新しいFacebook AppIdと新しいウェブサイトのスクリプトです。すべてが名前の例外を除いて良好にテストされています...私の目的のためにこれまで働いたことがないので、あなたの問題が私のものに関係しているかどうかわかりません。私は、私の問題は、このアプリのためFacebook上で何かが正しく設定されていないことだと思うが、私は関連性があるとは思わない。 – rwkiii

+0

私はそれが関係していると確信しています。コードと動作はまったく同じです。違いがあって、それは私が働いていたのです:) Facebookにバグリクエストを提出しようとしましたか? – Karens

答えて

関連する問題