facebook "og.likes" のテスト中に詰まったところ
アプリケーションからFacebookのGraph APIを叩いて、ユーザが特定のURLに「いいね」をつけさせたい。その昨日の開発およびテスト中にずっと詰まってたところメモ(エラーメッセージが不親切でござるよ?)
'(#2) Service temporarily unavailable'
たぶん、
- (Test) Userのアクセストークンがexpiredだったりinvlaid
- likeターゲットのURLのマークアップがアカン
- (Test) Userをつくるときの
Login Permissions
にpublish_actions
を追加してない?*1
'Unsupported post request.'
たぶん、facebookページのURLをlikeしようとしてる。テスト用に使うURLにも注意が必要っぽい(後述)
公式とか
Publishing Likes
An app can publish a like action, on behalf of the user, as long as the following conditions are true:
- The viewer of the in-app content is a Facebook user who has Facebook-authed and granted the app
publish_actions
permission- The in-app content has an Open Graph object page that is properly marked-up using Open Graph metatags
- The viewer has intentionally clicked on a custom in-app “like button” associated with the in-app content
うーん、テスト用に使ってたURLが悪かったとか、すんませんした、としか言えない
追記 2015/02/17
開発中のサービスのURLをサブドメインで切ってpermission requiredにしたりする。で、テストでそのURLをlikeしようとすることはよくあるわけで。その時、graph APIはsuccess
およびobject id
を正常に返してくるのだが、テストユーザのアクティビティログには一切出てこない。
エラーならまだしも、成功してんだぞ?
一抹の不安を胸にPOST /me/og.likes
するobjectのURLを適当に自分のブログ(publicであり、facebookの要求するmetaタグを持つ)にしてみたら、アクティビティログに正常に出てきた。
知見、403などのページをAPI経由でlikeすると、成功しているように見えても非同期で失敗しているのかもしれない。URLの問題なので、プロダクションリリースしたらたぶんちゃんと動くと思う。
せめてエラー返してほしい(切実)
Don't Repeat Yourself