javascript - 在我的 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)
)}
以下是顺序:
- 用户登录
- 填写反馈表
- 点击提交(使用 Gmail 发送范围征求用户同意)
- 在同意的基础上执行操作。
我被困在第三步。如何单独添加范围以获得用户同意?
解决方案
在对用户进行身份验证时,您不需要请求同意。你不能把它分开。
您需要在此处添加 Gmail.send 范围。
var scopes = 'https://www.googleapis.com/auth/gmail.readonly '+'https://www.googleapis.com/auth/userinfo.profile';
推荐阅读
- python - Wagtail 管理员:如何在提交更改以进行审核后控制用户重定向的位置
- model-checking - 输出总是大于 0 吗?PROMELA 计划
- javascript - NextJS 仅针对特定路径使用 trailingSlash 重写
- r - 使用公式预测 R 函数内部会产生“找不到对象”错误
- x86-64 - 在 0xFFFFFFFFFFFFFFFF 处引用内存
- java - 从包含不可映射字符的文件中读取
- python - 不必传递整行来在熊猫中创建新列?
- java - 是否有针对三个参考中带有 XML 签名的 java 代码的解决方案?
- ios - 缩放图像以填充后,SwiftUI 边缘变得可见
- html - 导航栏按钮不会下拉