[Facebook]FQLを使った日本語氏名の取得
FQLを使用してユーザー情報を取得する例
use Facebook::Graph;
$fb = Facebook::Graph->new(
app_id => 'xxxxxx',
secret => 'yyyy',
postback => 'http://www.hoge.com/cgi-bin/main.cgi?rm=callback',
);
my $fql1 = "SELECT name,username,first_name,sort_first_name,last_name,sort_last_name,locale FROM user WHERE uid=me()";
my $frinfo = $fb->fql( $fql );
これでnameに氏名が入ってくる・・・はずだったんですが、入ってくるのは英語表記の氏名ばかり。。
調べてみると。。。。
日本語名(以下原語表記)と英語名(以下デフォルト表記)の2種類があるんですが、表示に使おうとするプログラムの言語設定が原語表記と異なるならデフォルト表記で表示をするみたいなんですよ。具体的にはパラメータとして「&locale=ja_JP」を送れば表示されます。
ただ、上記のfqlメソッドを利用した場合、送信されるURIは
https://graph.facebook.com/fql?q=URLエンコードされたfql文&access_token=アクセストークン
となっていて、「&locale=ja_JP」を追加する事が出来ません。
そこで、fqlメソッドを使うのをあきらめて「HTTP::Request::Common」「LWP::UserAgent」を使ってサーバーとのやり取りを実装しました。
use URI::Escape;
use JSON;
my $fql = "SELECT name,username,first_name,sort_first_name,last_name,sort_last_name,locale FROM user WHERE uid=me()";
my $encFql = uri_escape( $fql );
my $url = 'https://graph.facebook.com/fql?q=' . $encFql . '&access_token=' . $accessToken . '&locale=ja_JP';
my $request = GET( $url );
my $ua = LWP::UserAgent->new;
my $frinfo = $ua->request( $request );
my $f1 = $frinfo->{_content};
my $f2 = JSON::decode_json($f1);
my $ff = $f2->{data};
fqlメソッドのパラメータで追加できるようにしてくれたらいいのに。。。です(^^)