Я пытаюсь настроить Push PubSub Google на свой сервер, чтобы получать уведомления Gmail push.Продолжайте получать сообщение об ошибке «Ошибка отправки тестового сообщения в Cloud PubSub ...» с помощью Google Cloud PubSub
Я получаю следующие области применения:
- https://mail.google.com/
- https://www.googleapis.com/auth/cloud-platform
- https://www.googleapis.com/auth/pubsub
- https://www.googleapis.com/auth/gmail.modify
- https://www.googleapis.com/auth/gmail.readonly
Это приста ks, чтобы создать тему, подписаться на эту тему, предоставить доступ к API Gmail на эту тему, но это не удается, когда я пытаюсь посмотреть мой почтовый ящик. Я после этого руководства: https://developers.google.com/gmail/api/guides/push и это код, я использую, чтобы сделать шаги, описанные выше:
var rp = require('request-promise');
// Step 1. Create a topic
rp({
url: 'https://pubsub.googleapis.com/v1/projects/projectId/topics/mailSync',
method: 'PUT',
headers: {
Authorization: 'Bearer accessToken'
}
}).then(function(response) {
console.log(response);
res.send(response);
})
.catch(function(error) {
console.log(error.message);
res.send(error.message);
});
// Step 2. Create a subscription:
rp({
url: 'https://pubsub.googleapis.com/v1/projects/projectId/subscriptions/mailSync',
method: 'PUT',
headers: {
Authorization: 'Bearer accessToken'
},
json: {
topic: 'projects/projectId/topics/mailSync',
pushConfig: {
pushEndpoint: 'https://developers.example.com/mailSyncHandler'
}
}
}).then(function(response) {
console.log(response);
res.send(response);
})
.catch(function(err) {
console.error(err);
res.status(err.statusCode).send(err.error.error.message);
});
// Step 3. Grant the Gmail API publish rights on our topic
rp({
url: "https://pubsub.googleapis.com/v1beta2/projects/projectId/topics/mailSync:setIamPolicy",
method: 'POST',
headers: {
Authorization: 'Bearer accessToken'
},
data: {
policy: {
bindings: [{
role: "roles/pubsub.publisher",
members: ["serviceAccount:[email protected]"]
}]
}
},
json: true
}).then(function(response) {
console.log(response);
res.send(response);
})
.catch(function(error) {
console.log(error.message);
res.send(error.message);
});
// Step 4. Watch my Inbox
rp({
url: "https://www.googleapis.com/gmail/v1/users/me/watch",
method: "POST",
headers: {
Authorization: 'Bearer accessToken'
},
json: {
topicName: "projects/projectId/topics/mailSync",
labelIds: ["INBOX"]
}
}).then(function(response) {
console.log(response);
res.send(response);
})
.catch(function(error) {
console.error(error);
res.send(error.message);
});
«, но он терпит неудачу, когда я пытаясь посмотреть мой почтовый ящик », пожалуйста, уточните , Вы получаете какое-то сообщение об ошибке/исключение при вызове watch() или это что-то еще. Пожалуйста, поделитесь исключением/ошибкой, если таковые имеются. –
Вы предоставили права публикации на свою тему? –
@TakashiMatsuo Я понятия не имею, как проверить, предоставил ли я право на публикацию? – jwanglof