Bidang `jenis kelamin` tabel pengguna FQL Facebook: bagaimana cara mengembalikan pria/wanita meskipun pengguna menggunakan lokal yang berbeda?

Situasi:

aplikasi facebook saya ( http://apps.facebook.com/mymagicmirror/ ) diperlukan untuk mendeteksi pengguna jenis kelamin, lalu menanyakan lawan jenis atau pria atau wanita

FQL:

SELECT uid, name, pic, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1='.$user_id.') and sex='male'

Masalah: Jika pengguna facebook menggunakan lokal lain, maka kolom 'sex' tidak lagi cocok dengan 'male' dan 'female'. Sebaliknya, katakanlah dalam bahasa Cina, jenis kelamin akan menjadi 男性 / 女性, dan FQL untuk sex='male' tidak akan memberikan hasil apa pun.

Adakah solusi untuk menanyakan semua teman pria/wanita meskipun pengguna facebook menggunakan bahasa selain bahasa Inggris?


person Unreality    schedule 20.10.2009    source sumber


Jawaban (4)


Tambahkan salah satu fungsi berikut ke file facebookapi_php5_restlib.php Anda:

Fungsi untuk pengguna.getInfo:
dari: http://forum.developers.facebook.com/viewtopic.php?pid=166745#p166745

public function &users_getInfo_en_US($uids, $fields) {
  return $this->call_method('facebook.users.getInfo',
    array('uids' => $uids, 'fields' => $fields, 'locale' => 'en_US'));
}

Kemudian, Anda dapat menghubungi users_getInfo_en_US($user, array('sex'));


Fungsi untuk FQL:
dari tautan di atas tetapi dengan pid=166866#p166866
Yang satu untuk lokal en_US (dari postingan sebelumnya) dan yang lainnya memungkinkan Anda meneruskan lokal yang ingin Anda gunakan, seperti ini:

public function &fql_query_localized($query, $locale) 
{
  return $this->call_method('facebook.fql.query',
    array('query' => $query, 'locale' => $locale));
}

Lalu, masukkan saja string 'en_US' untuk $locale.

person ma11hew28    schedule 05.02.2010

Dari http://forum.developers.facebook.com/viewtopic.php?pid=174065 :

Cukup berikan bahasa Inggris lokal (en_US) ke panggilan API dan itu akan mengembalikan Anda jenis kelamin dalam bahasa Inggris (pria/wanita).

Anda juga dapat menemukan http://forum.developers.facebook.com/viewtopic.php?pid=166744 berguna.

person Richy B.    schedule 20.10.2009
comment
maaf tolong koreksi saya jika saya salah, link yang anda berikan hanya membantu memperbaiki 'mendapatkan info pengguna', tetapi tidak memperbaiki FQL.... jadi pencocokan dengan Where sex='male' masih gagal - person Unreality; 20.10.2009
comment
Saya percaya bahwa jika Anda meneruskan lokal ke panggilan API saat melakukan panggilan FQL, itu akan menerjemahkan jenis kelamin menjadi pria/wanita yang memungkinkan FQL Anda berfungsi. Sudahkah Anda mencobanya seperti ini? - person Richy B.; 20.10.2009
comment
bagaimana cara meneruskan lokal ke panggilan API selama panggilan FQL? apakah Anda keberatan memberi saya contoh kode? terimakasih banyak - person Unreality; 21.10.2009

Jika seseorang menggunakan Facebook AS3 API: untuk mengatasi masalah ini, berikan "lokal" sebagai parameter untuk mendapatkan info gender menggunakan lokal en_US:

Facebook.api("/me",getMeHandler, {lokal:'en_US'});

Ini akan mengembalikan nilai bahasa Inggris "male"/"female", bukan nilai yang dilokalkan.

person Rosty    schedule 10.11.2010

Anda perlu menambahkan &locale=en_US ke permintaan GET atau POST yang dikirim oleh klien API Anda. Misalnya, jika Anda menggunakan perpustakaan klien PHP yang disediakan oleh Facebook (versi terbaru dirilis 2 November), maka Anda hanya perlu memodifikasi fungsi post_request file facebookapi_php5_restlib.php yang dimulai pada baris 3316.

Ganti baris 3320:

$url_with_get = $this->server_addr . '?' . $get_string;

Dengan ini:

$url_with_get = $this->server_addr . '?' . $get_string . '&locale=en_US';
person defines    schedule 27.11.2009
comment
Tidak tahu harus berkata apa kepada Anda, saya belum bisa meniru masalah ini sama sekali. Saat saya bertanya, saya mendapatkan datanya tanpa masalah. - person defines; 05.02.2010
comment
Ada kesalahan ketik pada contoh: alih-alih '&local=en_US' saya membayangkan seharusnya '&locale=en_US' - person Eric Schrijver; 24.04.2014