繁体   English   中英

如何从登录Google登录(仅限客户端的应用程序)中正确获取访问令牌?

[英]How to properly get Access Token from logged in Google Sign In (client-side only app)?

我正在使用Google登录按钮让用户使用其Google帐户登录:

    gapi.signin2.render("container-btn-google-login", {
        scope: "email profile",
        onsuccess: (user) => {
            let token = user.getAuthResponse();
            setToken(token);

            // How can I get the Access Token here
            // that should be the same as user.Zi.access_token?

            resolve(token);
        },
    });

我打算调用其他Google API,不想使用他们的Javascript库(我将使用fetch来调用他们的REST API)。

但是,当我将Authorization: token.id_token作为Header时,请求被拒绝。 如果我手动设置我可以从控制台( user.Zi.access_token )看到的值,它就可以工作。

如何从Google API Javascript SDK中提取access_token 使用像Zi这样神秘而无证的东西对我来说似乎并不安全。

好的,我在这里找到了相关文档 我们可以使用user.getAuthResponse(true)来获取带有访问令牌的Auth响应以及可能的其他有用信息:

参数是includeAuthorizationData

可选:一个布尔值,指定是否始终返回访问令牌和范围。 默认情况下,当fetch_basic_profile为true(默认值)且未请求其他范围时,不会返回访问令牌和请求的范围。

我的问题中的工作代码示例:

let token = user.getAuthResponse(true);
console.log(token.access_token)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM