【问题标题】:Gmail API permission to send emails on user consent in my react-redux application?在我的 react-redux 应用程序中,Gmail API 是否允许在用户同意的情况下发送电子邮件?
【发布时间】:2018-12-10 13:58:27
【问题描述】:

我正在开发一个 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. 在同意的基础上执行操作。

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

【问题讨论】:

    标签: javascript reactjs redux gmail-api


    【解决方案1】:

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

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

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

    【讨论】:

    猜你喜欢
    • 2022-07-17
    • 2020-05-30
    • 2014-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2020-10-28
    • 2014-10-10
    • 1970-01-01
    相关资源
    最近更新 更多