Gmail API Watch仕様の変更点と実装方法
Gmail API
Google Cloud Pub/Sub
Gmail
Gmail APIは現在、Cloud Pub/Subベースの通知システムを使用している。以前のchannel/resourceIdベースのシステムは廃止された。
Watch登録時の仕様
- topicName(Pub/Subトピック)を指定してwatchを作成する
- レスポンスにはhistoryIdとexpirationのみが含まれる
- channelIdやresourceIdは返されない
Webhook通知の処理
Pub/Subメッセージとして通知が送信され、message.dataをbase64デコードすると以下のJSONが取得できる:
emailAddressを使用してユーザーを識別する必要がある。以前のようにchannelIdでの識別はできない。
データベース設計の考慮点
- channelIdやresourceIdのカラムは不要
- 代わりにローカルで生成したIDで管理する(例:gmail_watch_id)
- ユーザー識別はemailAddress経由で行うため、Userテーブルとの連携が重要
有効期限の管理
- Watchは最大7日間有効
- 定期的な再登録が必要(推奨:1日1回)
- 既存のWatchを停止してから新規作成する
参照: https://developers.google.com/workspace/gmail/api/guides/push