Google OAUTH2でPOPアクセスできるようにする 参考文献: OAuth 2.0 for Mobile & Desktop Apps https://developers.google.com/identity/protocols/oauth2/native-app https://developers.google.com/identity/protocols/oauth2/native-app?hl=en ▼APIを有効にする まず https://console.developers.google.com/apis/library にアクセスし、 APIを作成する。高級なブラウザでないと画面は出てこない。 まずGoogleへのログインを要求される。 API対応のサービスがずらっと表示されるが、そこは無視し、 左上の「プロジェクトの選択▼」を選び、出てきたダイアログボックスの右上の [新しいプロジェクト]を選ぶ。 「新しいプロジェクト」作成画面になる。 プロジェクト名が My Project 11097 などのランダム名になっているので、 「mnews-Gmail-access」等と変更する。 [作成] 。 API一覧画面に戻る。左上が「mnews-Gmail-access▼」になったことを確認。 検索ボックスに Gmail を打ち、APIを探す。 検索結果の 「Gmail API」をクリック。 Flexible, RESTful access to the user's inbox [有効にする]のボタンを押す。 [認証情報を作成]ボタン https://console.developers.google.com/apis/credentials/wizard?project=mnews-gmail-access&supportedpurview=project をクリック。 「使用するAPI」のドロップダウンから GMail API を選ぶと、 「APIを呼びだす場所」の選択ドロップダウンが現れる。 「その他のUI (Windows, CLIツールなど)」を選ぶ。 下のラジオボタンでは(O)ユーザーデータ を選ぶ。 [必要な認証情報]ボタンを押す。 ダイアログが現れる: ========= OAuth 同意画面の設定 OAuth クライアント ID を作成する前に、データへのアクセスを求めているのが誰なのかをユーザーに知らせるための同意画面を設定する必要があります。 同意画面を設定した後、このページに戻って更新し、OAuth クライアント ID を作成してください。 [Not Now] [同意画面を設定] ========= 右下の[同意画面を設定]を押す。 OAuth 同意画面の User Type が内部か外部かのラジオボタンが出る。 汎用に使うアプリケーションなら「外部」にしたいところだが、第三者機関の認定を待つ 等の不具合があるので、仕方なく「内部」を選ぶ。 下の[作成]を押す。 OAuth同意画面の詳細設定画面が出る。 ロゴや詳細へのハイパーリンクが設定できる。 「アプリケーション名」に"POP access" を入れれば、[保存]ボタンは押せるようになる。 中ほどの 「Google API のスコープ」には、 https://mail.google.com/ が入ってないので、追加する。 あとは空欄のままでも問題なさそう。[保存]を押す。 左ペインの「認証情報」を選ぶ。まだ OAuth 2.0 クライアント ID の一覧は空のはず。 上の[+認証情報を作成]→OAuthクライアントID 、を選ぶ。 「OAuthクライアントIDの作成」画面になる。 まず「アプリケーションの種類」は(o)その他 を選ぶ。 「名前」にはPOP client とでも入れておく。 [作成]を押す。 クライアントID と クライアント シークレット が表示されたダイアログが出る。 クライアント ID 000000000000-0x00xxxxxxx0xxx0xx00x0x0xxxxxx0x.apps.googleusercontent.com クライアント シークレット VQxxGNNx0Fxxxxxxxxx3xxxJ これで「クライアントID」「クライアントシークレット」は取得できた。 client-id.dat.tcl に、「クライアントID」「クライアントシークレット」を埋める。 ▼ブラウザを起動させ、「authorization code」を得る ./oauth2 init 表示されたURLに高級なWebブラウザでアクセスする。 http://127.0.0.1:8033/ へリダイレクトされた場所に authorization code が 送られるので、ブラウザが起動している端末とOAuth2したいマシンが 異なっている場合は、適宜 ssh のトンネルを掘って、 ブラウザからの http://127.0.0.1:8033 のアクセスが oauth2 init を 実行しているマシンに行くようにしておく。 ▼「authorization code」から「access token」を得る これ以降は、 ./oauth2 refresh だけで access token が得られる。