2016-08-01 10 views
1

Mein Code wird verwendet, um am Ende eines Quizformulars dynamisch eine Facebook-Schaltfläche "Teilen" zu erstellen. Der Code funktioniert mit Ausnahme der Einstellung name korrekt. Als erstes ist hier die PHP-Code:Die FB.ui-Namenseigenschaft wird überschrieben, nachdem sie über den Feeddialog gesendet wurde

$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; 

Der obige Code macht in HTML als:

<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> 

Für meine Zwecke, den obigen Code und Ausgänge sind genau richtig. Der Anteil Dialogfeld erscheint mit einer Vorschau auf die mit dem name Feld erscheinen als 100% korrekt aussieht:

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

Aber die Post gemacht des Benutzers FB-Seite enthält die Wordpress-Tagline im name Feld:

My site's custom tagline. 

Ich kann nicht positiv sein, dass der Slogan verwendet wird. Ich habe es leicht geändert und es hat keine neuen Facebook-Posts bewirkt, aber es könnte irgendwo zwischengespeichert werden. Ich kann mir nicht vorstellen, wo sonst dieser Text konfiguriert ist - zufällig ist auch der Slogan der Seite. : S

Warum überschreibt Facebook, was ich in der name Eigenschaft des API-Aufrufs angeben? Auch wenn es von FB Design ist, wie überwinde ich das?

+0

Ich habe das gleiche Problem seit ein paar Tagen. Anscheinend hat Facebook etwas verändert. – Karens

+0

@Karens Dies ist ein neues Facebook AppId und neues Website-Skript. Alles funktioniert gut mit Ausnahme des Namens ... an meinem Ende hat es nie funktioniert, also bin ich mir nicht sicher, ob dein Problem mit meinem zusammenhängt. Ich vermute, dass mein Problem darin besteht, dass etwas nicht auf Facebook für diese App konfiguriert ist, aber ich sehe nichts, was ähnlich aussieht. – rwkiii

+0

Ich bin mir ziemlich sicher, dass es verwandt ist. Der Code und das Verhalten sind genau gleich. Mit einem Unterschied, dass für mich früher funktioniert :) Haben Sie versucht, eine Bug-Anfrage an Facebook zu senden? – Karens

Antwort