代码之家  ›  专栏  ›  技术社区  ›  Shamoon

如何使用Google OAuth2 ID令牌与节点.js/ 护照.js验证用户是否有效并经过身份验证?

  •  0
  • Shamoon  · 技术社区  · 6 年前

    在我的前端,我正在使用 vue.js (这并不重要)通过googleoauth流,我得到了一个 id_token 发件人:

    let googleAuthIdToken = await this.auth2.currentUser
                .get()
                .getAuthResponse().id_token;
    

    我想把那个令牌传给我的节点.js服务器(Express/Passport)验证是否允许用户登录。

    我想用护照把一个JWT寄回前台。

    0 回复  |  直到 6 年前
        1
  •  2
  •   Sasuke Uchiha    6 年前

    使用名为 googleapis ,安装后,导入模块。

    import { google } from 'googleapis';
    

    然后需要通过指定 CLIENT_ID, CLIENT_SECRET, REDIRECT_URL

    const oauth2Client = new google.auth.OAuth2(
        CLIENT_ID,
        CLIENT_SECRET,
        REDIRECT_URL,
    );
    

    然后你可以使用 oauth2Client

    const {tokens} = await oauth2Client.getToken(code);
    oauth2Client.setCredentials(tokens);
    

    为了获得必要的用户信息以存储在您自己的数据库中,您需要调用此方法。

    const plus = google.plus({ version: 'v1', oauth2Client });
    const me = await plus.people.get({ userId: 'me' });
    

    me 将包含您要查找的用户信息,一旦您获得了用户信息,就可以使用passport js存储它。