我按照本页的第二个答案,除了我用一个名为test.txt的简单空文本文件替换了复杂的php部分。我没有收到任何错误消息,但文件仍然是空的(我似乎无法将数据写入我的文件;有没有人知道为什么?更好的是,我很乐意写数据直接到mongodb数据库!Getting userdata using Facebook Login Javascript SDK
我的代码如下:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '753236104711327',
status : true,
xfbml : true
});
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log(response);
$.ajax(
{
type : 'POST',
data : response, //all data
url : 'test.txt',
success : function()
{
console.log(response.name)
}
});
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {scope: 'user_birthday, friends_birthday, basic_info, user_about_me, friends_about_me, user_education_history, friends_education_history, user_hometown, friends_hometown, user_interests, friends_interests, user_location, friends_location, user_questions, friends_questions, user_relationships, friends_relationships, user_relationship_details, friends_relationship_details, user_religion_politics, friends_religion_politics, user_work_history, friends_work_history'});
};
(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/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
任何帮助将不胜感激!
答案 0 :(得分:1)
您在此处所做的是向文本文件发送POST请求,除非您已将服务器设置为捕获请求,否则该文本文件确实没有意义。
data:
调用的$.ajax()
部分将给定的对象(在本例中为您的response
对象)转换为查询字符串,然后将其作为请求的一部分发送
这几乎就像你在地址栏中输入了这个:
http://your.website.net/path/to/test.txt?responseProperty1=someData&responseProperty2=someOtherData
和test.txt
没有办法处理查询字符串,因为它只是一个空文本文件。
您可能不得不使用像PHP这样的服务器端语言将数据写入您的文件。然后,您可以将ajax请求发送到服务器上能够处理请求参数的文件:
$.ajax({
type: 'POST',
data: response,
url: 'handle_response.php',
success: function() {
// it worked
}
});
我在PHP上并不擅长,也许你宁愿使用别的东西,所以我会把它留在那里,但我希望这有帮助
答案 1 :(得分:1)
您无法使用Javascript将数据写入文本文件。如果要将数据写入文本文件或Mongo,则需要将其发送到服务器并让服务器处理写入文件或数据库