このページの内容
oEmbed API とは
ブログなどの記事の中に、気になったツイートを埋め込みたいときに、埋め込むHTML文字列を取得することができるAPIです。
たとえば、下のようなイメージです。田端信太郎氏からリツイートされたときのものです。
理系な私にとって就活という対人コミュ力が求められるシチュは苦手だったんですが、自分なりの仮説を持って手を動かすことが正しいディスりなんじゃないかな。仮説が正しいかどうかは別。手を動かせるヤツは強い。就職してからも同じ。そこは理系脳で良かったと感じる。#就活 https://t.co/iFeDRU2c0h
— hiro-papa (@_hiropapa_) February 17, 2019
Application-only authentication: Oauth2 (bearer token)
oEmbedAPI にアクセスするには bearer token が必要となります。
取得方法は 【TwitterAPI】Search API の使い方(Java編)に、コード付きでご紹介していますのでご覧ください。
oEmbed API
準備するもの
埋め込みたいツイートのURLが必要となるので、あらかじめ取得しておく必要があります。
ツイートのURLは、ブラウザのURL欄をコピーすれば良いのですが、下記のようなフォーマットになっているようです。
https://twitter.com/ユーザ名(@の後ろ)/status/ツイートID文字列
ユーザ名とツイートID文字列は Search API で取得できる項目なので、ブラウザを使わずプログラムの中だけで URL を組み立てることもできます。
使い方
下記のライブラリを使用しています。
- OkHttp3
- Jackson
srcUrl の部分は、埋め込みたいツイートの URL に置き換えてください。
public String getOEmbedHtml() throws Exception {
String btoken = getBearerToken();
String srcUrl = "https://twitter.com/_hiropapa_/status/1096982028916994049";
String urlEncodedUrl = URLEncoder.encode(srcUrl, "UTF-8");
String oembedUrl = "https://publish.twitter.com/oembed?url=" + urlEncodedUrl;
Request oembedReq = new Request.Builder()
.url(oembedUrl)
.addHeader("Authorization", "Bearer " + btoken)
.build();
OkHttpClient client = new OkHttpClient();
Response oembedRes = client.newCall(oembedReq).execute();
String oembedResStr = oembedRes.body().string();
ObjectMapper mapper = new ObjectMapper();
TypeReference<HashMap<String, String>> reference = new TypeReference<HashMap<String, String>>() {};
Map<String, String> map = mapper.readValue(oembedResStr, reference);
return map.get("html");
}
戻り値は下記のようなHTMLですので、ブログ記事などに埋め込みましょう。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">理系な私にとって就活という対人コミュ力が求められるシチュは苦手だったんですが、自分なりの仮説を持って手を動かすことが正しいディスりなんじゃないかな。仮説が正しいかどうかは別。手を動かせるヤツは強い。就職してからも同じ。そこは理系脳で良かったと感じる。<a href="https://twitter.com/hashtag/%E5%B0%B1%E6%B4%BB?src=hash&ref_src=twsrc%5Etfw">#就活</a> <a href="https://t.co/iFeDRU2c0h">https://t.co/iFeDRU2c0h</a></p>— hiro-papa (@_hiropapa_) <a href="https://twitter.com/_hiropapa_/status/1096982028916994049?ref_src=twsrc%5Etfw">February 17, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>