Chrome拡張版はてなブックマークのログインの仕組み
ブラウザっていうとオリジンごとに厳密にリソースが隔離されていて、ログイン状態の同期はできないと思っていたんだけど、はてブの拡張はそれっぽい動きをやっているので、調べてみた。
拡張のソースコードは公開されている。
- (1) hatenaのログインページを表示する
- (2) ログイン状態だったらアクセストークンを取得する
- https://github.com/hatena/hatena-bookmark-googlechrome-extension/blob/ccc74d1e874f95ecf5255becca8e45e760f78de9/src/chrome/manifest.json#L26-L39
- https://b.hatena.ne.jp/my.name をGETしてrksというアクセストークンっぽいものをストレージに格納している
- ログインユーザの情報は
UserManager.user
に入っている
- (3) ブックマークの操作はアクセストークンを使ってapiコールする
以上。
要はhatenaのログインページに行くと、 document_end
でユーザ情報が同期されるようになっている。したがって、UserManager.setUser({login: true, name: "ho"})
みたいな誤った情報を書き込んでも、ログインページに行かなければそのままとなる。
仕組み自体はすごくシンプルでなるほどと思った。
-
category:
- 日記