📖

FacebookへのoEmbed API利用の申請が承認されるまで

3 min read

先日Facebookからこんなメールが来ていました。

Today, June 8, 2021, we announced v11.0 of the Graph API and Marketing APIs. With this update, there are new requirements to be able to access oEmbed APIs. Your app currently accesses the oEmbed APIs and might be affected by these changes.

To continue accessing the oEmbed APIs, you will have to submit your app for review by September 6th, 2021. If you want to request new access to the oEmbed APIs, you will also need to submit your app(s) for review.

わたしはクローバ PAGEというノーコードのホームページサービスを開発運営しています。クローバ PAGEではブログの本文中にInstagramのURLを貼り付けると、その投稿の内容がIFrameで埋め込まれるようになっています。この機能はoEmbedというInstagram側のAPIを利用して実現しているのですが、要するに2021/9/6までにアプリを申請して承認されないと、APIが使えなくなっちゃうよというわけです。

9月までまだだいぶ期間があるけど、しゃあないから忘れないうちにやっとくかと、Facebookのデベロッパーサイトにアクセスして申請することにしました。

https://developers.facebook.com/?locale=ja_JP

入力する項目は大きく分けて「認証情報を提供する」と「Oembed Readの使用目的」のふたつです。現状機能はうまく動いているし、規約に抵触するような使い方はしていないので、まあ普通に承認されるだろうとさくっと記入して提出しました。結果は不許可。しかもそれ以降APIの利用ができなくなってしまいました。9月までは使えるのと違うんか。お客様からはインスタの貼り付けができなくなった! とお問い合わせがやってきます。

その後何度か不許可になりながらも、結果なんとか承認されたのですが、仕様がわかるまでかなりハマったのでこちらにまとめます。

記述する言語について

質問の表記が日本語だったので、最初は何も考えず日本語で記入したのですが、レビュワーが日本人ではなさそうだったので、二回目からは英語で書くことにしました。英語でないとダメなのかはよくわかりません。DeepLさんにお世話になりました。

アクセストークンについて

oEmbed APIへのアクセスはApp Access Tokenを使います。ドキュメントにもそう書かれています。なので普通に考えると、FacebookでSSOする必要はないはずです(バックエンドサーバーにあるApp Access Tokenを使うことになるので)。現状これまでのApp Access Tokenで動いているのですから、初回はそのように書いて、不許可になりました。その時点でAPIへのアクセスはできなくなります。んん、これどうやって動いていること証明したらいいんや。

いろいろ試してみた結果、以下の条件でのみoEmbed APIへアクセスできることがわかりました。

  1. テスト環境(ライブモードでないアプリ)のアクセストークンであること
  2. 有効なUser Access Tokenであること
  3. 埋め込むURLが公式Facebookページもしくは公式Instagramページの投稿であること

1についてはすでにテスト用のアプリがあるならそれを使います。なければ新しく作成する必要があります。2については、テスト用のアプリであってもApp Access Tokenを使うことはできないっぽかったので、ログインユーザーのUser Access Tokenを使う必要があります。つまり承認を得るためにこのへんのしくみを作り変えないといけません。承認されたらアプリアクセストークンに戻すことになります。いちおうわたしは確認のためにその旨を申請時に書いておきましたが、特にコメントはありませんでした。そして3ですが、承認前は自分のFacebookやInstagramの投稿を埋め込むことはできなくて、Facebook内の特定の投稿しか許可されないようです。つまり、Instagramの埋め込みだけやりたい人も申請するにはFacebookに対応しないといけないよってことですね。

Facebookログインについて

最初はApp Access Tokenを使うのになんでFacebookのSSOが関係あるんやと思っていたのですが、上のような理由により、App Access Tokenを使うことができないので、oAuthによるFacebookとのSSOは必須です(と書きながらログイン連携しないとoEmbedが使えないっておかしくない? どのみちApp Access Token使えば不要になるのに、と思いました。もしかしたら何かの勘違いかもしれません)。
レビュワーの手間を省くために、あらかじめFacebookのデベロッパーサイトからテストアカウントを作っておいて、そのアカウント情報を記載しておくとよいと思います。

「テストできるURL」の欄について

「テストできるURL」とあるので、自サービス内のブログ機能のURLを書くのかと思ったのですが、どうやらそうではなくて上の公式Facebookページ等から適当な投稿のURLを書く欄だったようです。ドキュメントにはこう書かれているのですが、URLを含めるってどういうこと?って思いました。

When asked to provide a URL where we can test Oembed Read, include the URL of a page, post, or video from our official Facebook or Instagram pages, or the pages themselves.

使用目的などは利用するアプリやサービスによって違うと思いますので、良きように説明していただけたらと思います。
申請の受付を開始して間もないのでいろいろ改善されると思いますが、今後申請される方の参考になればうれしいです。

Discussion

ログインするとコメントできます