尝试在Appcelerator Titanium中获取Facebook电子邮件时出错2500

时间:2016-06-17 13:22:03

标签: facebook facebook-graph-api appcelerator titanium-mobile appcelerator-titanium

我尝试获取通过Facebook模块登录的用户的电子邮件地址。但每次都会出错{“error”:“出现了错误代码2500.必须使用活动访问令牌来查询有关当前用户的信息。”}

我的代码是:

var viewClick = function() {
    fb.logout();
    fb.initialize(); 
    fb.authorize();
};

var facebookLogged = function(e) {

    fb.requestWithGraphPath("me?fields=name,email,first_name,last_name", {}, 'GET', function(result) {
        Ti.API.info(JSON.stringify(result))
       // var data = JSON.parse(e.result);
});
};
var window = Ti.UI.createWindow({exitOnClose: true, navBarHidden: true, fullscreen: true, orientationModes: [
        Ti.UI.PORTRAIT,
        Ti.UI.UPSIDE_PORTRAIT,      
    ],
    backgroundColor: '#f0f2f2'
}); 

var fb = require('facebook');

if(Ti.Platform.osname === 'android') {

    window.fbProxy = fb.createActivityWorker({lifecycleContainer: window});
}

    //fb.setLoginBehavior(fb.LOGIN_BEHAVIOR_NATIVE);
fb.permissions = ['email'];

window.open();


var view = Ti.UI.createView({
    height: 200,
    width: 200,
    backgroundColor: 'red'
}); 

view.addEventListener('click', viewClick);

window.add(view);
fb.addEventListener('login', facebookLogged);

我还试图通过修改requestWithGraphPath参数来提供访问令牌代码:

fb.requestWithGraphPath("me?fields=name,email,first_name,last_name&access_token=" + e.source.accessToken, {}, 'GET', function(result) {}

但在这种情况下,我得到的信息是accessToken格式不正确。 TiFacebookModule :(主要)[117,178060] requestWithGraphPath回调错误:格式错误的访问令牌[这里是访问令牌值]?access_token = [这里是访问令牌值]

我做错了什么?如何从FB获取电子邮件?任何帮助深深感激。

1 个答案:

答案 0 :(得分:3)

我有同样的问题,这就是我所做的,对于Android,requestWithGraphPath不像IOS对应的那样工作,文档也没有更新。您需要发送对象中的字段,而不是第一个参数中的“me”:

var facebookLogged = function(e) {
    fb.requestWithGraphPath("me", { fields: "name,email,first_name,last_name"}, 'GET', function(result) {
        Ti.API.info(JSON.stringify(result))
        // var data = JSON.parse(e.result);
    });
};

希望它有所帮助。