2013-06-18 4 views
0

J'ai googlé et regardé d'autres questions similaires publiées sur Stackoverflow mais aucun d'entre eux ne semble fonctionner. Je dois pouvoir me connecter en utilisant la connexion FB sur mon site Web, puis récupérer ma liste d'amis. J'ai utilisé le code du site du développeur FB et je peux me connecter mais rien d'autre ne s'exécute. En particulier je voudrais comprendre deux choses:Facebook liste d'amis aller chercher

  1. Comment puis-je modifier ce code pour activer la connexion dans un bouton de déconnexion une fois que je suis connecté?
  2. Comment puis-je exécuter la fonction testAPI()?

Voici mon code complet: la connexion fonctionne mais je ne vois aucune sortie dans ma console JS.

<html> 
<title> Test Title</title>  
<body> 
<h1> About Test Title </h1>  
<p>Random text.</p> 
<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '345435435435', // valid App ID is used here 
     channelUrl : '//www.my website.com/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    // Here we subscribe to the auth.authResponseChange JavaScript event. This event is fired 
    // for any authentication related change, such as login, logout or session refresh.    This means that 
    // whenever someone who was previously logged out tries to log in again, the correct case below 
    // will be handled. 

    FB.Event.subscribe('auth.authResponseChange', function(response) { 

    // Here we specify what we do with the response anytime this event occurs. 
    if (response.status === 'connected') { 
    // The response object is returned with a status field that lets the app know the current 
    // login status of the person. In this case, we're handling the situation where they 
    // have logged in to the app. 

     console.log('Connected case… '); 
     testAPI(); 
    } else if (response.status === 'not_authorized') { 
    // In this case, the person is logged into Facebook, but not into the app, so we call 
    // FB.login() to prompt them to do so. 
    // In real-life usage, you wouldn't want to immediately prompt someone to login 
    // like this, for two reasons: 
    // (1) JavaScript created popup windows are blocked by most browsers unless they 
    // result from direct interaction from people using the app (such as a mouse click) 
    // (2) it is a bad experience to be continually prompted to login upon page load. 

    FB.login(); 
    console.log('Not authorized case… '); 

    } else { 
    // In this case, the person is not logged into Facebook, so we call the login() 
    // function to prompt them to do so. Note that at this stage there is no indication 
    // of whether they are logged into the app. If they aren't then they'll see the Login 
    // dialog right after they log in to Facebook. 
    // The same caveats as above apply to the FB.login() call here. 

    FB.login(); 
    console.log('else case… '); 
    } 
    }); 
}; 

// Load the SDK asynchronously 
(function(d){ 
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
ref.parentNode.insertBefore(js, ref); 
}(document)); 

// Here we run a very simple test of the Graph API after login is successful. 
// This testAPI() function is only called in those cases. 

function testAPI() { 
console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
    console.log('Good to see you, ' + response.name + '.'); 
}); 
} 
</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. 

Learn more about options for the login button plugin: 
/docs/reference/plugins/login/ --> 

<fb:login-button autologoutlink="true" show-faces="true" width="200" max-rows="1"></fb:login-button> 
</body> 
</html> 
+0

'testAPI' obtient appelé? Si oui, quelle est la sortie de 'console.log (response)'? –

+0

Je ne vois aucune sortie dans la console Javascript. Est-ce le bon endroit pour chercher la sortie? Je vois également la sortie suivante au début dans la console JS: Étant donné que l'URL n'est pas autorisée par la configuration de l'application: Une ou plusieurs des URL données ne sont pas autorisées par les paramètres de l'application. Il doit correspondre à l'URL du site Web ou à l'URL du canevas, ou le domaine doit être un sous-domaine de l'un des domaines de l'application. – user2399453

+0

S'il vous plaît vérifier [cette question] (http://facebook.stackoverflow.com/questions/14474122/given-url-is-not-permitted-by-the-application-configuration/) comme je pense que vous rencontrez un petit problème dans la configuration de l'application –

Répondre

0

logout o Pour, vous pouvez utiliser

FB.logout(function(response) { 
    //console.log(response); 
    // do something usefull ... 
}); 

et mettre ça sur un bouton. MAIS: vous vous déconnectez actuellement de l'utilisateur de Facebook et de votre application, les utilisateurs pourraient trouver cela étrange?

+0

Je suis nouveau dans ce domaine, donc je ne suis pas sûr d'avoir essayé votre suggestion dans le bon sens. Comment mettre ce code sur un bouton? J'essaie d'apprendre cela pour un projet expérimental parallèle. Y a-t-il de bons liens pour obtenir des informations à ce sujet? Je suis seulement familiarisé avec html et css et un tout petit peu de JS. – user2399453

+0

Pour traiter les requêtes FB asynchrones, un «petit bout de JS» pourrait être un gros obstacle. Quoi qu'il en soit, voir la réponse suivante. –

+0

Oui, cela pourrait s'avérer trop, mais je tiens à apprendre. J'ai cependant de nombreuses années d'expérience en programmation C. – user2399453

0

Déconnexion sur un bouton comme demandé:

<a href='#' onClick='doLogout();'>Logout from Facebook</a> 

...

function doLogout() { 
    FB.logout(function(response) { 
     //console.log(response); 
     alert("Bye bye..."); 
    }); 
} 
+0

Lorsque je fais cela, je vois le bouton de déconnexion mais en cliquant sur donne cette erreur: FB.logout() appelé sans un jeton d'accès. all.js: 55 i all.js: 55 ca.auth.logout.transform all.js: 95 da.prepareCall all.js: 95 m all.js: 96 i.provide.logout all.js : 97 (fonction anonyme) all.js: 80 (fonction anonyme) all.js: 78 doLogout onclick – user2399453

+0

D'autres idées? J'ai appris un peu plus de JS sur le côté et je comprends mieux le code JS maintenant. Cependant, je ne suis pas clair sur ce que mes paramètres d'application devraient être sur FB. J'ai activé "Site Web avec connexion Facebook" et l'URL que j'ai donnée est ma propre adresse de site Web (par exemple www.xyz.com). J'ai également la même URL dans le domaine Domaines d'application de Basic Info. Qu'est-ce que je rate?Je continue toujours à obtenir "L'URL indiquée n'est pas autorisée par la configuration de l'application: une ou plusieurs des URL indiquées ne sont pas autorisées par les paramètres de l'application, elles doivent correspondre à l'URL du site ou à l'URL du canevas. .. " – user2399453

Questions connexes