サービスアカウントタイプのOAuthクライアントを利用したGmail APIの実行方法について
以下のページを参考に、Google Appsのテナント内のユーザに対して、転送先メールアドレスの設定をしようと思っていますが、APIから応答がエラーとなってしまいます。
developers.google.com/gmail/api/v1/reference/users/settings/forwardingAddresses
試したことは、以下の通りなのですが、誤っている手順や不足している手順がないか、ご教授いただけませんでしょうか。よろしくお願いいたします。
1.OAuthクライアントの作成
Google Developer ConsoleのAPI Managerにアクセスし、タイプが「サービスアカウント クライアント」となるOAuth 2.0 クライアントを作成。作成したクライアントには、「Google Apps のドメイン全体の委任を有効にする」のチェックを入れている。
2.権限の付与
「Google Apps管理画面
->セキュリティ ->詳細設定
->APIクライアントアクセスを管理」から、
作成したクライアントに対して、「https://mail.google.com/」の権限を付与
3.アクセストークン取得
以下のページで公開されているPHPライブラリを使い、アクセストークンを取得しています。
developers.google.com/api-client-library/php/start/installation
アクセストークンを取得するPHPコードは以下の通りです。
<?php
require_once realpath(dirname(__FILE__).'/google-api-php-client/src/Google/autoload.php');
$client_email = 'platinum-pager-xxxxxx@appspot.gserviceaccount.com';
$private_key = file_get_contents('MyProject.p12');
$scopes = array("https://mail.google.com/");
$credentials = new Google_Auth_AssertionCredentials(
$client_email,
$scopes,
$private_key
);
$client = new Google_Client();
$client->setAssertionCredentials($credentials);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion();
}
var_dump($client->getAccessToken());
?>
4.Gmail API実行
URL:https://www.googleapis.com/gmail/v1/users/メールアドレス/settings/forwardingAddresses
メソッド:GET
ヘッダ:
Authorization: Bearer アクセストークン
→このリクエストに対する応答が、以下のエラー応答となります。
応答ステータス:400
応答本文:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "failedPrecondition",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}