Я работаю над приложением реакт-редукс, где пользователь может отправить свой отзыв / жалобу в соответствующую организацию. Идея состоит в том, чтобы отправлять электронные письма с согласия пользователя, для которого я использую Gmail API. Я интегрировал форму обратной связи.
Теперь пользователь должен войти в систему перед отправкой сообщения. Я не хочу добавлять отправку Gmail (https://www.googleapis.com/auth/gmail.send) область действия при входе в систему. Вход в систему (в заголовке) работает только с профилем и областями только для чтения. Разрешение на отправку электронной почты следует запрашивать отдельно только при нажатии кнопки «Отправить», а затем предпринять дальнейшие действия с этим согласием. Как я могу достичь этой области отправки электронной почты отдельно? Я записываю свой логин-код, так как я не уверен, что нужно сделать при отправке.
var clientId = 'xxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
var API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx';
var scopes = 'https://www.googleapis.com/auth/gmail.readonly '+'https://www.googleapis.com/auth/userinfo.profile';
var DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest"];
componentDidMount() {
this.handleClientLoad();
}
handleClientLoad = () => {
const script = document.createElement("script");
script.src = "https://apis.google.com/js/client.js";
script.async = true
script.onload = () => {
window.gapi.load('client:auth2', () => {
window.gapi.client.setApiKey(API_KEY);
window.setTimeout(this.initClient(), 1);
});
}
document.body.appendChild(script)
}
initClient = () => {
window.gapi.client.init({
apiKey: API_KEY,
discoveryDocs: DISCOVERY_DOCS,
clientId: clientId,
scope: scopes,
}).then(() => {
window.gapi.auth2.getAuthInstance().isSignedIn.listen(this.updateSigninStatus());
this.updateSigninStatus(window.gapi.auth2.getAuthInstance().isSignedIn.get());
});
}
updateSigninStatus = (isSignedIn) => {
if (isSignedIn) {
window.gapi.auth2.getAuthInstance().currentUser.listen((user) => {
console.log(user);
});
} else {
console.log("error");
}
}
authClick = () => {
window.gapi.auth2.getAuthInstance().signIn().then((user) =>
console.log(user)
)}
В следующем порядке:
- Пользователь входит в систему
- Заполните форму обратной связи
- Нажмите «Отправить» (запросите согласие пользователя с помощью области отправки Gmail)
- Выполнять действия на основании согласия.
Я застрял на 3-й ступени. Как добавить область отдельно, чтобы получить согласие пользователя?