oauth2-extensionsがうまく動かなかったときの対処方法

oauth2-extensionsがうまく動作せず、あれこれと試したので対処方法をメモしておきます。

今なんであえて、oauth-extentionsを使うのか?

CloudGate SSO 環境でChrome Syncにログインができず、 Chromeの標準のOAuth認証用のAPI(chrome.identity API)が使えない問題に直面したのが経緯です。

今回はそういう事情があって、chrome.identity APIで作ったものをoauth-extentionsを使用して書き直しましたが、 普通の環境の場合は chrome.identity APIを使用した方が圧倒的に安定しますし、簡単なので通常の環境であればそちらをオススメします。

拡張機能自体の修正は数行で済みました。
後はこれがとある環境で無事に動作することを祈るばかりです。

対処法1. クライアントIDを発行する際に「承認済みのリダイレクト URI」には2つアドレスを設定する

ワイルドカード指定(下の方)だけで良いはずですが何故か動かず、2つ設定してあります。

  • https://www.google.com/robots.txt
  • https://www.google.com/robots.txt*

対処法2. RefreshTokenの取得周りのコードを修正する

下記サイトを参考にさせていただきました。

Google Calender API v3をChrome Extensionから使ってイベント登録する。 - return $lock;

対処法3. adapters/google.js の redirectURLをhttpsにする

今はrobots.txt すら httpsにリダイレクトされるようなので、修正しておきます。

ハマりどころ

oauth-extensionを使っているプラグインを同時にインストールするとchrome.extension.getURLが正しく動作しないという問題があります。

複数のプラグインが同じリダイレクトURLを使用することが問題のようなので、 独自のものに変更すると直ります。

一般ユーザがどのような拡張機能をインストールしているかは分からないため、 自前のサーバ等にリダイレクト用のファイルを設置する方が無難かもしれません。