🐧 Linux / WSL
🍎 macOS
gog CLI
Google OAuth
OpenClaw
keyring
systemd
📋 こんな方に役立ちますよ
OpenClawなどのAIエージェントフレームワークで、Google Calendar、Gmail、DriveなどをCLIで操作したいのに、OAuth認証の設定でつまずいている方!特にヘッドレス環境(WSL、サーバー)でブラウザなしでOAuthを通す必要がある場合、このガイドがぴったりですよ。
🔍 gog CLIって何ですか?
gogはGoogle Workspace(Gmail、Calendar、Drive、Contacts、Sheets、Docs)をコマンドラインから操作できるCLIツールです。OpenClawのようなAIエージェントフレームワークでスキルとして自動検出されますが、実際に使うにはOAuth認証と環境変数の設定が別途必要ですよ。
既存のgoogle-calendarスキルとは別物で、gogは独自のOAuthストレージ(~/.config/gogcli/)を使います。
⚙️ Step 1: credentials.jsonの作成
Google Cloud ConsoleでOAuth 2.0 Client IDを作成し、credentials.jsonファイルを生成します。
{
"installed": {
"client_id": "{your-client-id}.apps.googleusercontent.com",
"client_secret": "{your-client-secret}",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"redirect_uris": ["http://localhost"]
}
}
このファイルを~/.config/gog/credentials.jsonに保存してくださいね。
⚙️ Step 2: gogにcredentialsを登録
gog auth credentials ~/.config/gog/credentials.json
実行すると、gogが自動的に~/.config/gogcli/credentials.jsonにコピーしてくれますよ。
⚙️ Step 3: OAuth認証(manualモード)
WSLやヘッドレスサーバーのようにブラウザがない環境では、--manualオプションを使いますよ。
GOG_KEYRING_PASSWORD="{your-password}" gog auth add {your-email}@gmail.com \
--services calendar,gmail,drive,contacts,docs,sheets \
--manual --force-consent
実行するとURLが一つ出力されます:
- そのURLをブラウザ(別のPCでもOK)で開いてGoogleアカウントでログイン
- 権限を許可するとlocalhostにリダイレクトされます(ページが表示されないのは正常です!)
- ブラウザのアドレスバーのURL全体をコピーしてターミナルに貼り付け
📁 トークン保存構造
認証完了後、トークンはこのように保存されますよ:
~/.config/gogcli/
├── credentials.json # OAuthクライアント情報
└── keyring/
└── token:default:{your-email}@gmail.com # 暗号化されたrefresh token
トークンはGOG_KEYRING_PASSWORDでAES暗号化されて保存されます。パスワードなしでアクセスするとエラーになり、パスワードが違ってもエラーになりますよ。
🔑 環境変数の設定 — ここが核心です!
gogがkeyringを復号するにはGOG_KEYRING_PASSWORD環境変数が必須です。そして3箇所すべてに設定する必要がありますよ。
(1) openclaw.json — エージェントスキル設定
"gog": {
"enabled": true,
"env": {
"GOG_KEYRING_PASSWORD": "{your-password}",
"GOG_ACCOUNT": "{your-email}@gmail.com"
}
}
(2) ~/.bashrc — 対話型シェル用
# gog CLI keyring password
export GOG_KEYRING_PASSWORD="{your-password}"
export GOG_ACCOUNT="{your-email}@gmail.com"
(3) systemdサービスファイル — 最重要!
ファイル: ~/.config/systemd/user/openclaw-gateway.service
Environment=GOG_KEYRING_PASSWORD={your-password}
Environment=GOG_ACCOUNT={your-email}@gmail.com
.bashrcを読み込みません!systemdサービスファイルに直接環境変数を追加しないと、エージェントがgogを使えませんよ。設定変更後は必ず:
systemctl --user daemon-reload
openclaw gateway restart
🔧 トラブルシューティング
❌ aes.KeyUnwrap(): integrity check failed
| 原因 1 | GOG_KEYRING_PASSWORDがsystemdサービスで設定されていない |
| 原因 2 | 別のパスワードで暗号化された破損トークンファイルが存在 |
| 解決 | 破損トークンを削除して再認証:
|
❌ no TTY available for keyring file backend password prompt
| 原因 | GOG_KEYRING_PASSWORD環境変数が未設定 |
| 解決 | 上記3箇所(openclaw.json、.bashrc、systemd)すべてに環境変数を追加 |
❌ context deadline exceeded(トークン交換タイムアウト)
| 原因 | OAuth authorization codeは使い捨てで、数分で期限切れ |
| 解決 | gog auth addコマンドを再実行して新しいcodeを取得 |
✅ 検証コマンド
# 認証状態の確認
GOG_KEYRING_PASSWORD="{your-password}" gog auth list
# カレンダーイベント取得テスト
GOG_KEYRING_PASSWORD="{your-password}" gog calendar events primary --max 5
# キーリングファイルの確認
ls -la ~/.config/gogcli/keyring/
📌 まとめ
| ポイント | 内容 |
| ヘッドレスOAuth | --manual --force-consentオプションでブラウザなしで認証可能 |
| 環境変数3箇所 | openclaw.json + .bashrc + systemdサービスファイル(これを忘れるとエージェントで動作しません!) |
| keyring暗号化 | トークンはAES暗号化保存、GOG_KEYRING_PASSWORD必須 |
| 破損トークン | パスワード不一致時はトークン削除+再認証が最も確実な解決法 |
Googleがどんなに厳重に鍵をかけても、正しい鍵(credential + 環境変数)さえあれば必ず開きますよ!🔑✨