Gmail APIでシステムとGmail(G Suite)を連携【調査編】

gmail-accessPOP3とSMTPを使うのは面白くないので、API経由でGmailを利用したらメールを削除することなくシステムと連携できると思い、試したときの覚書。

公式サイトを参考に

 

目次

  1. APIの使用制限
  2. システム用アカウントをGoogle Apps(G Suite)に追加
  3. Server-to-Serverのサービスアカウントを作成
  4. PHPサンプルを試す
  5. ウェブアプリケーションのOAuth2.0で認証

 


1.APIの使用制限

APIの使用制限がある。1日10億Quota Unit。メソッドごとに消費ユニットが違う。例えばメール送信は100ユニット消費する。

一秒間に250ユニットの制限がある。同時に3つ以上送信しようとすると制限に引っかかる。詳しくは公式サイトで。

メール送信はローカルのPostfixに任せた方がいいかもしれない。

 

クライアントライブラリが未成熟(?)

PHPはベータ版

Node.jsはまだアルファ版

 


2.システム用アカウントをGoogle Apps(G Suite)に追加

やろうと思っていることの概要。

システム専用のアカウントを作って、そのアカウント宛てに届いたメールを順次処理していく。

処理が終わったら「既読」ラベルを付けてアーカイブ。

Node.jsはアルファ版なのでWordPressのプラグインとしてPHPで開発することにした。

 


3.Server-to-Serverのサービスアカウントを作成

システム専用アカウントでGoogle Developer Consoleにアクセスして、API Keyを生成する。

公式サイトを参考に

簡単な手順

  1. Gmail APIを有効にする(プロジェクトの作成)
  2. 認証情報を生成
    「役割」はよく分からないので「ログ書き込み」を選択
  3. キー情報のファイルがダウンロードされる

 


4.PHPサンプルを試す

GitHubからPHP用のクライアントライブラリをダウンロードする。

Releasesに置いてあるのは依存関係も含んでいるので、そのまま解凍すれば使える。

今のバージョンはv2.1.1

公式サイトのサンプルをGmail API用に変更して実行しても「アクセストークンがない」と怒られる。

"error": "unauthorized_client",
"error_description": "Client is unauthorized to retrieve access tokens using this method."

クライアントライブラリが自動でアクセストークンを取得すると思ったら違った。

よく分からないので「サービスアカウントキー」での認証は諦め。

前にやったことのある「ウェブアプリケーション」の認証方式で実装することにした。

 


5.ウェブアプリケーションのOAuth2.0で認証

公式サイトと前の記事を参考に。あとクライアントライブラリの仕様が変わってる。

 

スコープの設定メモ。

google-api-php-client\vendor\google\apiclient-services\src\Google\Service\Gmail.php
の最初の方にconstされている。

 

部下がこれやろうとしてたら「PHPMailerを使ってPOP3とSMTPでいいじゃん」というのは間違いない。

 

< Related Posts >