お久しぶりです。塚原です。
インフルエンザ、ノロウイルス。。。ソーシャル疲れなど
流行っておりますが、負けじとモリモリ開発がんばっております。
今回はひとつ、
台湾版のモニプラ「MONIPLA 摩樂派」
http://fa.tw.monipla.com/
をリリースして早3ヶ月、
印象的な対応があったのでご紹介します。
ある日、お問い合わせで
「いいね!したんですけど参加できませんっ!」
というものが複数寄せられたことがありました。
参加するには、キャンペーン詳細画面からページにいいね!してもらい、
参加ボタンを押した後に判定をして
いいね!されていたら参加画面を表示
いいね!されていなかったらキャンペーンの詳細画面に戻す
という処理が入っています。
この判定がうまくいかないことが過去にもあったので、
またFacebookのAPIがご機嫌斜めなのかなぁと思い検証してみました。
社内で数人に試してもらった結果、いいね!はみんなされているのに
参加できる人とできない人が見受けられました。
さらに該当キャンペーンの企業様のページをみると
言語ごとに違うアカウントのページがある。。。でもいいね!は共通。。。
噂のグローバルぺージに対応してたのです。
グローバルページは、(1)のように親とするページがひとつあり、
そこに他の言語のページ(2)(3)がぶら下がる形になっています。
(1)英語 [親]
(2)台湾語 [子]
(3)日本語 [子]
(1)(2)(3)のどこからいいね!してもカウントされ、
ページ上ではいいね!されたことになっています。
例えば(3)でいいね!して、(1)へアクセスしたとしても
(1)でもいいね!されている状態になるわけです。
調査した結果、以下のようなことが起きていました。
(3)でいいね!して、(1)へアクセスしても
(1)でいいね!しているとみなされない、
(1)でのいいね!は(1)でページでしか有効としないという判定をしていたため
うまくいっていませんでした。
実際、キャンペーンを開催していたのは台湾語のページ上で、
新規のユーザ様がそのまま台湾ページでいいね!して参加した場合はうまくいき、
以前、英語ページや日本語ページでいいね!していて参加しようとしていたユーザ様が
失敗しているといった状況でした。
これをどのように改善したかというと、
1.判定をしたいFacebookページの親ページIDを取得
こういうときはこれを使うと便利です。
Graph API エクスプローラ http://developers.facebook.com/tools/explorer/
Graph API モードで [該当ぺージID]?fields=global_brand_parent_page を実行すると
1 2 3 4 5 6 7 8 |
{ "global_brand_parent_page": { "category": "*************", "name": "*************", "id": "親ぺージID" }, "id": "該当ぺージID" } |
という結果が返ってきて、親ぺージIDがわかります。
2.親ページIDから、ぶら下がる子ページのIDを取得し、子ページのIDリストを保持。
Graph API エクスプローラをFQL Queryモードにして、以下のFQLを実行します。
1 2 3 4 5 6 |
SELECT global_brand_child_page_id FROM page_global_brand_child WHERE parent_page_id = 親ぺージID |
結果として子ぺージの一覧を取得できます。
1 2 3 4 5 6 7 8 9 10 11 |
{ "data": [ { "global_brand_child_page_id": 子ぺージID }, { "global_brand_child_page_id": 子ぺージID }, … ] } |
3.既存ロジックの改修
Graph API /me/likes https://developers.facebook.com/docs/reference/api/user/#likes
で取得した自分がいいね!しているページのIDリストに保持した子ページのIDがあれば、
いいね!しているとみなす形へ変更。
とりあえずアナログでDBに保持させて対応しましたが、
数が増えてきたらAPIから取得するように開発を入れる予定です。
(できればAPI側でいい感じのグローバルページ対応があればうれしい。。。)
まだグローバルページは一般開放はされておらず
大手企業でしか使えていないみたいですが。。。
グローバル化、さらにはそういう企業様と
お仕事できるまでになったのだなぁと感じた対応でした。
それではまた~!
名の由来は「天祐」。 そのままではおこがましいので 天の字から1本棒をとればと叔父がつけてくれたもの。 名に恥じぬよう世の中の助けとなるものを創り出していきたいです。 for Facebookのサポート・運用開発の部隊に所属しています。