[英]Accessing variable inside of FB.login function
請看一下這個功能:
loginButton.on('click', function(e) {
e.preventDefault();
FB.login(function(response) {
var gender;
var events = [];
if (response.status === 'connected') {
userID = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
FB.api('/me/groups', {access_token : accessToken} ,function(res) {
for(var i = 0 ; i < res.data.length ; i++){
events.push(res.data[i].name);
$('#facebookGroups').append('<input type="radio" id="' + res.data[i].name + '"/>' + '<label for="' + res.data[i].name + '">' + res.data[i].name + '</label>').trigger('create');
}
});
FB.api('/me', {access_token : accessToken} ,function(respuesta) {
gender = respuesta.gender;
});
console.log(events);
console.log(gender);
$.ajax({
type: 'GET',
url:"http://127.0.0.1:3000/inituser",
data: {
userGender : gender,
_id : userID,
userEvents : events,
latitude : userLatitude,
longitude : userLongitude,
},
dataType: 'jsonp',
contentType: 'application/json',
crossDomain: true,
success: function(data){
console.log('data successfully sent');
},
error: function(){
console.log('there was an error');
}
});
$.mobile.pageContainer.pagecontainer('change' , '#homepage');
console.log(response);
} else {
$.mobile.pageContainer.pagecontainer('change' , '#login');
}
},{ scope: "email , user_groups , user_events" });
});
我無法弄清楚如何訪問性別和事件變量。 我需要通過ajax調用將它們發送到遠程服務器,但是我無法在FB.api
調用之外訪問它們。 我試着宣布他們在全球范圍內,在之后loginButton
功能,並且你可以在里面看到FB.login
功能,但沒有什么工作。
這顯然是一個范圍界定的問題。 外面有人知道是否有解決方案嗎?
首先,您可以僅使用一個API來代替/me/groups
和/me
(針對性別)這兩個調用- /me?fields=gender,groups
FB.api
調用是異步的 。 因此,您必須在收到成功回調后繼續進行。 為此,您可以按照以下結構進行操作-
loginButton.on('click', function(e) {
e.preventDefault();
FB.login(function(response) {
var gender;
var events = [];
if (response.status === 'connected') {
userID = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
GetUserDetails(); //
} else {
$.mobile.pageContainer.pagecontainer('change' , '#login');
}
},{ scope: "email , user_groups , user_events" });
});
function GetDetails(){
FB.api('/me?fields=gender,groups' ,function(res) {
userId = res.id;
gender = res.gender;
for(var i = 0 ; i < res.groups.data.length ; i++){
events.push(res.groups.data[i].name);
$('#facebookGroups').append('<input type="radio" id="' + res.groups.data[i].name + '"/>' + '<label for="' + res.groups.data[i].name + '">' + res.data[i].name + '</label>').trigger('create');
}
console.log(events);
console.log(gender);
SendToAjax(userID, gender, events);
});
}
function SendToAjax(userID, gender, events){
....
// your ajax call here
....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.