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

我正在使用 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作为标题放置时,请求被拒绝。如果我手动输入一个可以从控制台 ( user.Zi.access_token)看到的值,它就可以工作。


如何access_token从 Google API Javascript SDK 中提取?使用一些神秘和无证之类的东西Zi对我来说似乎并不安全。


慕标5832272
浏览 266回答 1
1回答

尚方宝剑之说

好的,我在这里找到了相关的文档。我们可以使用user.getAuthResponse(true)访问令牌和可能的其他有用信息来获取身份验证响应:参数是includeAuthorizationData:可选:指定是否始终返回访问令牌和范围的布尔值。默认情况下,当 fetch_basic_profile 为 true(默认值)并且没有请求其他范围时,不会返回访问令牌和请求的范围。我的问题中的示例工作代码:let token = user.getAuthResponse(true); console.log(token.access_token)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript