1

使用钛,是否有人有一些简单的说明来获取用户的 Facebook 名称,一旦登录到 Facebook?

4

3 回答 3

1

您无需执行任何此操作,登录完成后数据响应中会提供用户名。

查看 appcelerator 文档

于 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
        }
    });

};

最后,连同nameand一起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 回答