检索Gmail access_token

时间:2018-07-12 11:27:39

标签: google-chrome-extension gmail google-oauth gmail-api

我需要找到用户登录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

1 个答案:

答案 0 :(得分:0)

按照此快速入门中的步骤进行操作,您将看到我所寻找的示例。 https://developers.google.com/gmail/api/quickstart/python