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

Error 2500 when trying to get Facebook Email in Appcelerator Titanium

我试图获取通过 Facebook 模块登录的用户的电子邮件地址。但是每次都会出错 {"error":"An error code 2500 has occured. An active access token must be used to query information about the current user."}

我的代码是:

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: (main) [117,178060] requestWithGraphPath 回调错误:访问令牌格式错误[这是访问令牌值]?access_token=[这是访问令牌值]

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

我遇到了同样的问题,这就是我所做的,因为 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);
    });
};

希望对您有所帮助。