0

我正在使用 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) 看到的值,它就可以工作。

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

4

1 回答 1

3

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

参数是includeAuthorizationData

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

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

let token = user.getAuthResponse(true);
console.log(token.access_token)
于 2019-06-03T16:47:34.947 回答