前の記事でFirebase Dynamic Linksを使ったURL短縮を書いたけど、
ドメインを自分で設定するのでURLバンされる気してbitly APIも試してみた。
その時の備忘録。
TwitterのURLバンについては、もぎゃさんのCrieit記事を参照
準備
bitly アカウントの作成
Bitly API Documentationにアクセスして作成。
メニューの「Manage App」を選択して、
「MANAGE MY APPS」を押すと、認証画面が出てくる
ログインするとこんな感じ。
パスワード変更
Gooogleアカウントで認証するとパスワードが未設定。
Access Tokenを生成するときにパスワードが必要なので設定する
パスワード変更は右上のハンバーガーメニューから。
アカウントを選択。
「Change Password」を選ぶ。
パスワード変更画面が出てくるので、パスワードを変更。
CURRENT PASSORDは未設定なので、空欄でOK。
Access Tokenの生成
APIを利用するために、Access Tokenを発行する。
再度、右上のハンバーガーメニューから。
今度は「Generic Access Token」を選択
さっき設定したパスワードを入力して、
「GENERATE TOKEN」を押すと...
Access Tokenが発行されるのでコピーする。
使ってみる
ソースコードはこんな感じ。
APIクライアントはaxiosを使ってます。必要に応じてnpm i -S axios
。
import axios from "axios"; // 生成したbitlyのアクセストークン const BITLY_ACCESS_TOKEN = process.env.BITLY_ACCESS_TOKEN || ""; export default class BitlyHelper { public async toShort(targetURL: string): Promise<string> { try { // bitly API v4のエンドポイント const endpoint = "https://api-ssl.bitly.com/v4"; // URLを短縮するAPIのURL const url = `${endpoint}/shorten`; // リクエストヘッダのAuthorizationにAccess Tokenを設定 const options = { headers: { "Content-Type": "application/json", Authorization: `Bearer ${BITLY_ACCESS_TOKEN}` } }; // リクエストするパラメタ const params = { long_url: targetURL }; // POSTでリクエスト const res: any = await axios.post(url, params, options); // linkが短縮URL return res.data.link; } catch (error) { // エラーが発生したら、短縮前のURLを返す return targetURL; } } }
shorten APIのドキュメントはこちら。
ほかにもAPIがいろいろあるっぽい。
若干ハマったのが、以下の3点
- バージョンによって認証方法が違う
- API keyじゃなくアクセストークンを使う
- リクエストヘッダはAuthorizationとContent-Typeが必要
- Content-Typeがなくて、406が返ってきた。。
以上!!
おすすめの書籍
実践TypeScript ~ BFFとNext.js&Nuxt.jsの型定義~
- 作者: 吉井健文
- 出版社/メーカー: マイナビ出版
- 発売日: 2019/06/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
TypeScript実践プログラミング (Programmer's SELECTION)
- 作者: スティーブ・フェントン,鈴木幸敏,株式会社クイープ
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/23
- メディア: 大型本
- この商品を含むブログ (1件) を見る
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/30
- メディア: 大型本
- この商品を含むブログを見る
- 作者: 池田泰延,鹿野壮
- 出版社/メーカー: 技術評論社
- 発売日: 2019/01/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る