我需要找到用户登录GMail后发送到浏览器的Google access_token 。它应该在Cookie中或浏览器本地存储中的某个位置。
问题在于
chrome.identity.launchWebAuthFlow({url: authURL, interactive: true}, cb)
希望用户即使已经登录到GMail,也要再次选择该帐户。
我真正想要的是与Microsoft Outlook Office.context.mailbox.getCallbackTokenAsync
类似的功能,它允许登录的用户使用Microsoft REST API,而无需再次进行身份验证。
PS 。GMail允许用户同时登录到多个Google帐户,其中每个浏览器标签可能显示不同的活动邮箱。
P.P.S。。似乎可以谷歌搜索一个众所周知的问题: Promise.then()
我在开发人员控制台中找不到GX cookie,可能是不再相关了。
代替它的是最像一个Cookie的Cookie-“ COMPASS”,它属于google域,是受保护的且仅用于http。
我尝试在gmail上下文中运行此代码,但仍未成功:
let actualCode = '(' + function() {
let access_token = '[COMPASS cookie]';
window.fetch('https://www.googleapis.com/oauth2/v1/userinfo?alt=json', {
credentials: "include"
}).then(res => {
return res.text().then(dt => ({text: dt, status: res.status}));
}).then(res => {
console.log(res);
});
window.fetch('https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=' + access_token, {
}).then(res => {
return res.text().then(dt => ({text: dt, status: res.status}));
}).then(res => {
console.log(res);
});
} + ')();';
let script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
两种情况下我都得到401:Invalid Credentials
。
答案 0 :(得分:0)
按照此快速入门中的步骤进行操作,您将看到我所寻找的示例。 https://developers.google.com/gmail/api/quickstart/python