首页 > 解决方案 > 在我的 react-redux 应用程序中,Gmail API 是否允许在用户同意的情况下发送电子邮件?

问题描述

我正在开发一个 react-redux 应用程序,用户可以在其中向各自的组织提交他们的反馈/投诉。这个想法是在我使用 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. 在同意的基础上执行操作。

我被困在第三步。如何单独添加范围以获得用户同意?

标签: javascriptreactjsreduxgmail-api

解决方案


在对用户进行身份验证时,您不需要请求同意。你不能把它分开。

您需要在此处添加 Gmail.send 范围。

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

推荐阅读