Разрешение API Gmail отправлять электронные письма с согласия пользователя в моем приложении реагировать на избыточность? - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над приложением реакт-редукс, где пользователь может отправить свой отзыв / жалобу в соответствующую организацию. Идея состоит в том, чтобы отправлять электронные письма с согласия пользователя, для которого я использую 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)
 )}

В следующем порядке:

  1. Пользователь входит в систему
  2. Заполните форму обратной связи
  3. Нажмите «Отправить» (запросите согласие пользователя с помощью области отправки Gmail)
  4. Выполнять действия на основании согласия.

Я застрял на 3-й ступени. Как добавить область отдельно, чтобы получить согласие пользователя?

1 Ответ

0 голосов
/ 02 июля 2018

Вы не можете запросить согласие при аутентификации пользователя. Вы не можете разделить это.

Вам нужно будет добавить область Gmail.send здесь.

var scopes = 'https://www.googleapis.com/auth/gmail.readonly '+'https://www.googleapis.com/auth/userinfo.profile';
...