J'ai essayé de récupérer des données en utilisant Facebook api dans des entrées de formulaire. Maintenant, tout s'est très bien passé jusqu'à ce que j'essaie de récupérer également l'emplacement de l'utilisateur actuel.
Si l'utilisateur actuel a partagé sa position (où il vit), je n'ai aucun problème. Cependant, si l'utilisateur n'a pas partagé sa position sur Facebook, je reçois une erreur: Uncaught TypeError: Cannot read property 'name' of undefined
Voici le code que j'utilise. Si vous avez une idée de la façon de le résoudre, veuillez commenter ici :)
<div id="fb-root"></div>
<script>
// Additional JS functions here
window.fbAsyncInit = function() {
FB.init({
appId : '*******', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.api('/me', function(response) {
document.getElementById("user_login").value="FB - " + response.username;
document.getElementById("user_email").value=response.email;
document.getElementById("first_name").value=response.first_name;
document.getElementById("last_name").value=response.last_name;
document.getElementById("user_url").value=response.link;
document.getElementById("fbid").value=response.id;
if(response.location !== 'undefined')
{
document.getElementById("location").value=response.location.name;
alert(response.location.name);
}
document.getElementById("registerform").submit();
});
} else if (response.status === 'not_authorized') {
alert('error');
} else {
alert('Please Log In!');
}
});
};
// 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));
</script>
Sur cette ligne:
if(response.location !== 'undefined')
... vous vérifiez si response.location
n'est pas la chaîne"undefined"
. Puisque undefined
n'est pas la chaîne "undefined"
, la condition est vraie. Ensuite, vous essayez d'utiliser response.location.name
et comme response.location
est undefined
, vous obtenez l'erreur.
Vous vouliez probablement dire:
if(response.location)
ou
if(typeof response.location !== 'undefined')