【发布时间】:2012-10-24 01:24:04
【问题描述】:
使用钛,一旦登录 facebook,是否有人有一些简单的说明来获取用户的 facebook 名称?
【问题讨论】:
使用钛,一旦登录 facebook,是否有人有一些简单的说明来获取用户的 facebook 名称?
【问题讨论】:
您无需执行任何此操作,用户名在登录完成后的数据响应中提供。
【讨论】:
我没有测试过代码,但你可以试试这个:
var fbuid = Titanium.Facebook.uid; //this would be the logged user's facebook uid
function fQuery() //this function exec the fql query
{
var myQuery = "SELECT name FROM user WHERE uid = "+fbuid;
var data = [];
Titanium.Facebook.request('fql.query', {query: myQuery}, function(x)
{
var results = JSON.parse(x.result);
var username = results[0].name; //user's fb name
});
};
【讨论】:
啊,这就是你的做法:
function getFacebookInfo(){
Titanium.Facebook.requestWithGraphPath('me', {}, 'GET', function(e){
if (e.success){
var jsonObject = JSON.parse(e.result);
//do something here with these values. They cannot be passed out of this
//function call... this is an asynchronous call
//that is, do this:
saveToDb(jsonObject.first_name);
} else {
//some sort of error message here i guess
}
});
};
最后,与name 和username 一起,查看 facebook 页面以了解您可以获得的其他变量 -
http://developers.facebook.com/docs/reference/api/
最后:请注意这是一个回调,并且钛实际上不会等待此调用完成。也就是说,任何声明保存在 requestWithGraphPAth 之后返回的结果的变量都将立即返回,因此几乎总是为空。
我猜你可以制作一个漂亮的循环,它只是...循环直到某个变量设置为 false。你会在回调中将变量设置为 false ......但这看起来很狡猾。
只需让你的回调做所有的事情,也就是说,保存到数据库等
如果你确实走调用 Ti.Facebook.authorise() 来登录用户的路线,记得定义
Ti.Facebook.addEventListener('login',function(e){
if (e.success){
...
...
} else if (e.error){ } else if (e.cancel) { }
}
在通话之前。然后,在成功位中,您可以进行 requestWithGraphPath 调用等等。我只是将所有详细信息保存到数据库中,然后每次都检索它们,对我来说很好!
【讨论】: