【发布时间】: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)
)}
以下是顺序:
- 用户登录
- 填写反馈表
- 点击提交(使用 Gmail 发送范围征得用户同意)
- 在同意的基础上执行操作。
我被困在第三步。如何单独添加范围以获得用户同意?
【问题讨论】:
标签: javascript reactjs redux gmail-api