チタンを使用して、Facebookにサインインした後、ユーザーのFacebook名を取得するための簡単な指示はありますか?
3 に答える
これを行う必要はありません。ログインが完了した後、データ応答でユーザー名が提供されます。
私はコードをテストしていませんが、これを試すことができます:
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/
最後に: これはcallbackであり、titanium はこの呼び出しが終了するまで実際には待機しないことに注意してください。つまり、requestWithGraphPAth の後に返された結果を保持するために宣言された変数は、すぐに戻り、結果としてほとんど常に空になります。
いくつかの変数がfalseに設定されるまで...ループする気の利いたループを作成できると思います。そして、コールバックで変数を false に設定します...しかし、それは危険なようです。
コールバックで他のすべてを実行するだけです。つまり、データベースなどに保存します。
ユーザーにログインするために Ti.Facebook.authorise() を呼び出すルートに進む場合は、定義することを忘れないでください
Ti.Facebook.addEventListener('login',function(e){
if (e.success){
...
...
} else if (e.error){ } else if (e.cancel) { }
}
電話の前に。そして、サクセス ビットで、requestWithGraphPath 呼び出しなどを行うことができます。すべての詳細をデータベースに保存し、その後毎回それらを取得するだけで、うまくいきます!