しばらくぶりにやってみたら、結構方法が変わっていたのでメモ。type=offlineにしないとrefresh tokenが取れない罠にまたハマりました。

  1. 以下のURLにアクセスする。
    https://console.developers.google.com/

  2. 管理者アカウントでログインする。

  3. 上部の「Google APIs」の右隣りの▼をクリックして、「プロジェクトを作成」をクリックする。

  4. プロジェクト名に任意の名称(なんでもよい)をクリックして「作成」をクリックする。

  5. 左メニューの「ライブラリ」をクリックする。

  6. 検索テキストボックスに「admin」と入力し、下に表示される「Admin SDK」をクリックする。

  7. 「有効にする」をクリックする。

  8. 左メニューの「認証情報」をクリックする。

  9. 「認証情報を作成」→「OAuthクライアントID」をクリックする。

  10. 「同意画面を設定」をクリックする。

  11. 「ユーザーに表示するサービス名」に任意の名称(なんでもよい)を入力して「保存」をクリックする。

  12. 「ウェブアプリケーション」をチェックする。

  13. 「承認済みのリダイレクト URI」に「http://localhost/」と入力して、「作成」をクリックする。

  14. 「クライアントID」と「クライアントシークレット」をメモして「OK」をクリックする。

  15. 画面右上の人のマークのアイコンをクリックして「ログアウト」をクリックして、
    一旦ログアウトする。

  16. 以下のURLをブラウザに入力する。

    https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=[14でメモしたクライアントID]&redirect_uri=http://localhost/&scope=https://www.googleapis.com/auth/admin.directory.user&access_type=offline&approval_prompt=force
    
  17. 2でログインしたアカウントと同じアカウントでログインする。

  18. 「許可」をクリックする。

  19. ブラウザ上部の「http://localhost/?code=」より後ろの部分(認可コード)をメモする。

  20. Linuxからcurlコマンドで以下を実行する。

    curl -d client_id=[15でメモしたクライアントID] -d client_secret=[14でメモしたクライアントシークレット] -d redirect_uri=http://localhost/ -d grant_type=authorization_code -d code=[19でメモした認可コード] https://accounts.google.com/o/oauth2/token
    
  21. 20のレスポンスとして、アクセストークンが返ってくる。