Lineでog:imageを表示させるにはContent-Typeヘッダーを明示的に指定する必要がある


og:imageにS3にアップロードした画像を指定した時に、
何故かLineでog:imageが表示されていなかったので原因を調べたら
Content-Type:image/jpeg をS3オブジェクトのmeta情報に設定する必要がありました。(Content-Typeは適宜指定してください。)


その他検証時メモ

Lineに投稿すると
ユーザーエージェントが facebookexternalhit/1.1;line-poker/1.0 のクローラーがアクセスしてきた後にog:imageに設定したファイルに facebookexternalhit/1.1;line-poker/1.0Mozilla/6.0 からアクセスが来ているようでした。

203.104.145.38 - - [08/Dec/2017:05:16:17 +0000] "GET / HTTP/1.1" 200 10519 "-" "facebookexternalhit/1.1;line-poker/1.0" "-"
203.104.145.38 - - [08/Dec/2017:05:16:17 +0000] "GET /assets/hoge.png HTTP/1.1" 200 84437 "-" "facebookexternalhit/1.1;line-poker/1.0" "-"
203.104.145.59 - - [08/Dec/2017:05:16:17 +0000] "GET /assets/hoge.png HTTP/1.1" 401 195 "http://example.com/" "Mozilla/6.0" "-"

facebookexternalhit/1.1;line-poker/1.0 のipは 203.104.145.38Mozilla/6.0203.104.145.59whois コマンドでIPの所有者を調べたら両方共LINE Corporationが所有しているようでした。
開発サーバーで line-poker はベーシック認証を回避する設定はしていましたが、 Mozilla/6.0 はベーシック認証で弾くようになっていたためかLineでog:imageは表示されませんでした。
line-poker からも画像にアクセス自体はあったようですが、Lineアプリの方ではog:imageは表示されていませんでした。

推測するにLineのシステムは、記事情報を取得するクローラーと画像を取得するクローラーは別のプログラムが動いているのだろうと思われます。(しかし画像のクローラーのユーザーエージェントに Mozilla/6.0 とするのはベーシック認証をかけているテスト環境でOGPのテストがしずらいので、 facebookexternalhit/1.1;line-poker/1.0 を指定してもらえると助かります・・・)