使用钛,是否有人有一些简单的说明来获取用户的 Facebook 名称,一旦登录到 Facebook?
问问题
1729 次
3 回答
1
您无需执行任何此操作,登录完成后数据响应中会提供用户名。
于 2012-11-04T22:42:37.793 回答
0
我还没有测试过代码,但你可以试试这个:
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
});
};
于 2012-11-03T18:54:43.960 回答
0
啊,这是你的做法:
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
and一起username
查看 facebook 页面,了解您可以获得的其他变量 -
http://developers.facebook.com/docs/reference/api/
最后:请注意,这是一个回调,并且钛实际上不会等待此调用完成。也就是说,任何声明保存在 requestWithGraphPAth 之后返回的结果的变量都将立即返回,因此几乎总是为空。
我想你可以做一个漂亮的循环,只是......循环直到某个变量设置为假。你会在回调中将变量设置为 false ......但这似乎很狡猾。
只需让您的回电执行其他所有操作,即保存到数据库等
如果你确实走调用 Ti.Facebook.authorise() 来登录用户的路线,记得定义
Ti.Facebook.addEventListener('login',function(e){
if (e.success){
...
...
} else if (e.error){ } else if (e.cancel) { }
}
通话前。然后,在成功位中,您可以进行 requestWithGraphPath 调用等等。我只是将所有详细信息保存到数据库中,然后每次都检索它们,对我来说很好!
于 2012-11-04T17:20:45.300 回答