users.messages.get
のAPIを使おうとしてのエラーメモです。
https://developers.google.com/gmail/api/reference/rest/v1/users.messages/get
Metadata scope doesn't allow format FULL
というエラーが出ました。
ドキュメントにこれらのパーミッションが必要と書いてあるので許可してたのですが......
https://mail.google.com/
https://www.googleapis.com/auth/gmail.modify
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.metadata
https://www.googleapis.com/auth/gmail.addons.current.message.metadata
https://www.googleapis.com/auth/gmail.addons.current.message.readonly
https://www.googleapis.com/auth/gmail.addons.current.message.action
検証環境
- Node.js v15.3.0
- googleapiモジュール v66
試したコード
//省略
gmail.users.messages.get({
userId: 'me',
id: `xxxx`,
// format: 'FULL'
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
console.log(res);
});
//省略
ちなみにallow format FULL
となっていたのは、何も指定しないとデフォルトのフォーマットがFULLになるからという理由です。
- MINIMAL
- FULL (デフォ)
- RAW
- METADATA
https://developers.google.com/gmail/api/reference/rest/v1/Format
/auth/gmail.metadata
のパーミッションを許可しない
Metadata scope doesn't allow format FULL gmail
とのことなのでそのままなのですが、APIドキュメントのテスターで試そうとしたら、/auth/gmail.metadata
のパーミッションがチェック外れている状態でした。
試しにチェックして試すと、テスター上も同様のエラーが発生。
ということでトークンを作成する際に/auth/gmail.metadata
を許可しなければOKです。
トークン作成する際のスコープから/auth/gmail.metadata
をはずしてトークンを作成しなおしたらいけました。
const SCOPES = [
`https://mail.google.com/`,
`https://www.googleapis.com/auth/gmail.modify`,
`https://www.googleapis.com/auth/gmail.readonly`,
// `https://www.googleapis.com/auth/gmail.metadata`,
`https://www.googleapis.com/auth/gmail.addons.current.message.metadata`,
`https://www.googleapis.com/auth/gmail.addons.current.message.readonly`,
`https://www.googleapis.com/auth/gmail.addons.current.message.action`
];
まとめ
これはドキュメントミスな気がするけどどうなんでしょう。。