Posted at

Facebook Graph APIでフィールドのエイリアスが作成できるらしい

More than 3 years have passed since last update.


これはなに?

FacebookのGraph APIのドキュメントを見ていると、戻ってきたフィールド名にエイリアスが作れるようなので試してみました。

ドキュメントの『フィールドのエイリアスの作成』というところに書いてありました。


サンプルを試してみる

ドキュメントに書いてあるやつをまんま試してみます。

curlではこんな感じです。

$ curl -G \

-d "fields=id,name,picture.width(100).height(100).as(picture_small),picture.width(720).height(720).as(picture_large)" \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/v2.6/me"

Graph APIエクスプローラを使う時は以下のやつをそのまま貼り付けてください。

me?fields=id,name,picture.width(100).height(100).as(picture_small),picture.width(720).height(720).as(picture_large)

取得した内容はこんな感じです。

.as(picture_small).as(picture_large)が効いてますね。

{

"id": "xxxxxxxx",
"name": "<YOUR_NAME>",
"picture_small": {
"data": {
"height": 100,
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/xxxxx_xxxxxxxxxxxxxxx_8327030_n.jpg?oh=06568783b279aaf70a9d93efa2bc5bae&oe=57AD5DAA",
"width": 100
}
},
"picture_large": {
"data": {
"height": 162,
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/xxxxx_xxxxxxxxxxxxxxx_8327030_n.jpg?oh=b30ea2c42561252c9649ec2641664f58&oe=57BA04D6",
"width": 162
}
}
}

.as(picture_large)を取って実行すると、pictureとなっているのを確認できます。

{

"id": "xxxxxxxx",
"name": "<YOUR_NAME>",
"picture_small": {
"data": {
"height": 100,
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/xxxxx_xxxxxxxxxxxxxxx_8327030_n.jpg?oh=06568783b279aaf70a9d93efa2bc5bae&oe=57AD5DAA",
"width": 100
}
},
"picture": {
"data": {
"height": 162,
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/xxxxx_xxxxxxxxxxxxxxx_8327030_n.jpg?oh=b30ea2c42561252c9649ec2641664f58&oe=57BA04D6",
"width": 162
}
}
}

試しに、.as('でっかいやつ')とか日本語を入れてみるとエラーになりました。

{

"error": {
"message": "Syntax error \"'でっかいやつ' is not a valid name\" at character 112: id,name,picture.width(100).height(100).as(picture_small),picture.width(720).height(720).as('でっかいやつ')",
"type": "OAuthException",
"code": 2500,
"fbtrace_id": "DYk86HsTkDT"
}
}


感想

ぱっと使う場所が思い浮かばなかったりするのですが、自分でコントロールしたい場合は.as()を使うと良さそうですね。