Facebook ドメイン認証で DNS TXT レコードを使う場合は注意が必要という話


今年 5 月から Facebook でドメイン認証が導入された。直近はそこまで影響はないが、今後、広告入札に影響が出るので早めに対応、という話は代理店経由で効いたりするケースも多いかと思う。

ドメイン認証とは

ドメイン認証については「Facebookページ利用者なら知っておくべき、リンク先URLのドメイン認証機能の使い方|アナグラム株式会社」が詳しいのでこちら参照。

小粒だが気をつけるべき点

CMS を使っていたり部門が違っていたりすると、<meta> タグを挿入したり認証用のファイルを置いたりするのが困難ということがたまにあるかと思う。正直なところ、Google Search Console でも同じ作業をするので、どう違うのか、なぜそんな困難なのか微妙だとは思うが……

そんなときに、DNS の TXT レコードに登録してドメイン認証するという方法がある。DNS にエントリを追加するのでこちらの方が心理的ハードルが高いが、こちらのほうが楽というケースもあるだろう。

だが、Facebook Business Manager から吐き出されるコードを正確に設定しないと思わぬところで認証が失敗するので気をつける必要がある。

なぜ認証に失敗するか

例えばコピペミスなどで TXT レコードの先頭にスペースが入ってしまった場合、いとも簡単に認証に失敗してしまう。

実際に damelog.com ドメインで試してみたが、まず先頭に半角スペースを挿入してみる。

> set type=TXT
> damelog.com
Server:		8.8.8.8
Address:	8.8.8.8#53

damelog.com	text = &quot;v=spf1 mx -all&quot;
damelog.com	text = &quot; facebook-domain-verification=r8zoXXXX&quot;

この状態で認証を試してみると、以下の通り失敗となる。

次に、先頭の半角スペースを削除する。

> set type=TXT
> damelog.com
Server:		192.168.1.1
Address:	192.168.1.1#53

damelog.com	text = &quot;v=spf1 mx -all&quot;
damelog.com	text = &quot;facebook-domain-verification=r8zoXXXX&quot;

すると今回は成功する。

このように、先頭に半角スペースが入っただけで認証に失敗してしまう

RFC との整合性

DNS TXT レコードについての RFC である「RFC 1464 Using the Domain Name System To Store Arbitrary String Attributes」によると、

Leading and trailing whitespace (spaces and tabs) in the attribute
name are ignored unless they are quoted (with a “`”). For example,
“abc” matches ” abc” but does not match “` abc”.

とあるので、先頭に半角スペースが入っていたとしても無視される実装になっているべきなのだが、Facebook はここまで RFC を読んでいないのか、そういう実装になっていないようである。

そのため、若干もやもやするはするものの、ドメイン認証を確実に通す方が先決かと思うので、DNS 経由でドメイン認証しているのに失敗している場合は、必要なコード以外にゴミをコピペしていないか確認すればいいかと思う。


ドメイン認証については Facebook ページについてのみ言及されているが、Facebook という大枠から見ると Facebook も Instagram も同じものになる。今後、Instagram 広告の入札時にドメイン認証の有無は間違いなく影響するようになると思われるので、早いうちに対応したほうがいいだろう。