Google Rest Apis 和 google 登录

Google Rest Apis and google sign in

我已经成功地使用 google 登录库创建了一个 google 登录按钮,请求额外的范围但是我无法弄清楚如何将其转换为 API请求。我正在使用 googleUser.getAuthResponse().id_token 并获得一个令牌,但我不确定如何将其转换为访问令牌以与我的 API 请求一起发送?

我几乎只使用了文档中的内容:

    function onSignIn(googleUser) {
    var profile = googleUser.getBasicProfile();

    document.getElementById("acc").src = profile.getImageUrl();
    console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
    console.log('Name: ' + profile.getName());
    console.log('Image URL: ' + profile.getImageUrl());
    console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.
    
    var oAuthToken = googleUser.getAuthResponse().id_token
    }

不接受 Google 登录返回的 ID 令牌作为任何 Google API 的凭据。它仅供 passing to your backend 使用,因此您可以在那里安全地识别用户。

您需要访问令牌才能调用 Google APIs。可以使用 googleUser.getAuthResponse(true).access_token 在 onSignIn 方法中检索令牌。仅当您请求的范围不是基本配置文件范围时才会出现,无论如何您都需要 API 访问权限。

Google 登录建立在 GAPI 之上。用户登录后,就 GAPI 而言,您可以检查 gapi.auth2.getAuthInstance().isSignedIn.get() 以验证用户是否登录。此时,使用 GAPI to call Google APIs 会将凭据附加到对 Google 的服务器的请求。