2016-04-09 4 views
-1

Ich entwickle eine Web-App, wo Benutzer in einem Textfeld eine URL eingeben können, und es in einem Warnfeld die FB-Daten des Links (Kommentar Anzahl und Freigaben)HTML-Texteingabe an Facebook übergeben API Javascript-Aufruf

zurückgeben

Der fblogin Teil funktioniert perfekt. Ich möchte grundsätzlich verwenden, was auch immer der Benutzer in Textfeld1 (ID ist URL) in der fb.api anstelle der aktuellen hart codierten URL (http://www.google.com).

Ein anderes Problem in diesem Code ist, dass, auch wenn ich die hartcodierte URL verwende, und wenn ich es ändere und die Datei mit FTP aktualisiere, zeigt es mir IMMER Ergebnisse von einer der URLs, die ich zuvor ausgeführt habe die aktuell eingegebene (in diesem Beispiel ist es google.com).

Sie eine Live-Demo hier sehen können: http://floralytics.com/fb/fbapi.html

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<title>Facebook Login JavaScript Example</title> 
 
<meta charset="UTF-8"> 
 
</head> 
 
<body> 
 

 
\t <fb:login-button scope="public_profile,email" onlogin="checkLoginState();"> 
 
</fb:login-button> 
 

 
<div id="status"> 
 
</div> 
 

 
\t <input name="textbox1" id="url" type="text" /> 
 
<input name="buttonExecute" onclick="testAPI(document.getElementById('url').value)" type="button" value="Execute" /> 
 

 
<script> 
 
    // This is called with the results from from FB.getLoginStatus(). 
 
    function statusChangeCallback(response) { 
 
    console.log('statusChangeCallback'); 
 
    console.log(response); 
 
    // The response object is returned with a status field that lets the 
 
    // app know the current login status of the person. 
 
    // Full docs on the response object can be found in the documentation 
 
    // for FB.getLoginStatus(). 
 
    if (response.status === 'connected') { 
 
     // Logged into your app and Facebook. 
 
     testAPI(); 
 
    } else if (response.status === 'not_authorized') { 
 
     // The person is logged into Facebook, but not your app. 
 
     document.getElementById('status').innerHTML = 'Please log ' + 
 
     'into this app.'; 
 
    } else { 
 
     // The person is not logged into Facebook, so we're not sure if 
 
     // they are logged into this app or not. 
 
     document.getElementById('status').innerHTML = 'Please log ' + 
 
     'into Facebook.'; 
 
    } 
 
    } 
 

 
    // This function is called when someone finishes with the Login 
 
    // Button. See the onlogin handler attached to it in the sample 
 
    // code below. 
 
    function checkLoginState() { 
 
    FB.getLoginStatus(function(response) { 
 
     statusChangeCallback(response); 
 
    }); 
 
    } 
 

 
    window.fbAsyncInit = function() { 
 
    FB.init({ 
 
    appId  : '470275149837189', 
 
    cookie  : true, // enable cookies to allow the server to access 
 
         // the session 
 
    xfbml  : true, // parse social plugins on this page 
 
    version : 'v2.5' // use graph api version 2.5 
 
    }); 
 

 
    // Now that we've initialized the JavaScript SDK, we call 
 
    // FB.getLoginStatus(). This function gets the state of the 
 
    // person visiting this page and can return one of three states to 
 
    // the callback you provide. They can be: 
 
    // 
 
    // 1. Logged into your app ('connected') 
 
    // 2. Logged into Facebook, but not your app ('not_authorized') 
 
    // 3. Not logged into Facebook and can't tell if they are logged into 
 
    // your app or not. 
 
    // 
 
    // These three cases are handled in the callback function. 
 

 
    FB.getLoginStatus(function(response) { 
 
    statusChangeCallback(response); 
 
    }); 
 

 
    }; 
 

 
    // Load the SDK asynchronously 
 
    (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')); 
 

 
    // Here we run a very simple test of the Graph API after login is 
 
    // successful. See statusChangeCallback() for when this call is made. 
 
    function testAPI() { 
 
// console.log('Welcome! Fetching your information.... '); 
 
    // FB.api('/me', function(response) { 
 
    // console.log('Successful login for: ' + response.name); 
 
     //document.getElementById('status').innerHTML = 
 
     //'Thanks for logging in, ' + response.name + '!'; 
 
    //}); 
 

 
//FB.api('http://graph.facebook.com/?id=https://www.youtube.com/watch?v=JtNyJWKRtbo', function(response) { 
 
//console.log(response); 
 
//alert('# of fb comments: ' + response.share.comment_count); 
 
//alert('# of fb Shares: ' + response.share.share_count); 
 
//}); 
 

 

 
FB.api("http://graph.facebook.com/?id=http://www.google.com", 
 
    function(response) { 
 
     alert('# of fb comments: ' + response.share.comment_count); 
 
alert('# of fb Shares: ' + response.share.share_count); 
 
    } 
 
); 
 

 
    } 
 
</script> 
 

 
<!-- 
 
    Below we include the Login Button social plugin. This button uses 
 
    the JavaScript SDK to present a graphical Login button that triggers 
 
    the FB.login() function when clicked. 
 
--> 
 

 

 

 
</body> 
 
</html>

Antwort

1

So, anderen zu helfen, fand ich die Antwort. Einfache Verwendung der folgenden

//set an id for your text box, and call your function. something like that: 
 

 
<input name="buttonExecute" onclick="YOURFUNCTION()" type="button" value="Execute" /> 
 

 
//Then do the following inside the javascript 
 
var url = document.getElementById('url').value; 
 
FB.api("http://graph.facebook.com/?id=" + url, 
 
function(response){ 
 
... 
 
.. 
 
...

Für das Problem gleichen Daten zu zeigen, stellte sich heraus, dass Sie die URL URIencode müssen, bevor sie schieben. Ich verwendete encodeURIComponent Javascript

+0

Sie können Ihre eigene Antwort als akzeptiert übrigens markieren. – Meligy