Google OAuth2.0获取授权信息返回的id_token如何解析

背景

我们在做google登录的时候,第一步先要获取授权码code,在得到code之后会根据code拿到授权的token信息,token信息中包含:access_token,refresh_token,scope,token_type,expires_in和id_token等信息。这里的id_token就是JWT格式的token,那么我们该如何对它进行解析呢?

解决

  1. 首先我们需要引入依赖包
<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.10.3</version>
</dependency>

2.通过代码解析

DecodedJWT jwt = JWT.decode(idToken);
// 获取个人信息
String email = jwt.getClaim("email").asString();
boolean emailVerified = jwt.getClaim("email_verified").asBoolean();
String name = jwt.getClaim("name").asString();
String picture = jwt.getClaim("picture").asString();
String givenName = jwt.getClaim("given_name").asString();
String familyName = jwt.getClaim("family_name").asString();
// Google ID
String sub = jwt.getClaim("sub").asString();
String locale = jwt.getClaim("locale").asString();

通过上述代码我们就能拿到谷歌登录用户的个人信息。
我们也可以直接获取所有的Claim信息:

// 获取所有声明及其值
Map<String, Claim> claims = jwt.getClaims();// 遍历并输出所有声明及其值
for (Map.Entry<String, Claim> entry : claims.entrySet()) {String claimName = entry.getKey();Claim claimValue = entry.getValue();System.out.println(claimName + ": " + claimValue.asString());
}

另外:

// Google ID,和上边的sub的值是同一个
String subject = jwt.getSubject();

在 Google 的 OAuth 2.0 中,JWT 的 subject (主题)声明通常是用户的唯一标识符,通常是用户的 Google ID。这个标识符在用户的整个生命周期中是不会改变的,即使用户的邮箱地址发生变化,他们的 Google ID 也不会改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两天学会微服务网关Gateway-Gateway过滤器

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

前端React篇之React中什么是受控组件和非控组件?

目录 React中什么是受控组件和非控组件&#xff1f;受控组件非受控组件 React中什么是受控组件和非控组件&#xff1f; 在React中&#xff0c;受控组件和非受控组件是两种表单元素的状态管理方式。 受控组件 受控组件&#xff08;Controlled Component&#xff09;是指其值由…

探秘Solr:解密搜索引擎背后的原理与应用(一)

本系列文章简介&#xff1a; 在本系列文章中&#xff0c;我们将从Solr的基本概念开始&#xff0c;解释索引和搜索是如何工作的&#xff0c;深入探讨倒排索引、分词器和搜索算法等关键概念。接着&#xff0c;我们将了解Solr的工作原理&#xff0c;从数据导入和索引构建到搜索流程…

数据结构 - 栈和队列

本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除数据&#xff0c;插入数据的一端叫做栈顶&#xff0c;另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压…

如何借助私域营销在医美行业中脱颖而出?

在现今这个以貌取人的社会&#xff0c;外貌焦虑已变得司空见惯。美丽往往能给人带来更多的瞩目和机遇&#xff0c;但天生丽质并非人人可得。随着经济的繁荣和消费结构的升级&#xff0c;颜值经济开始崭露头角&#xff0c;医美行业因此受到了广大消费者的青睐&#xff0c;迎来了…

Leetcode 剑指 Offer II 068.搜索插入位置

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个排序的整数数组 nums 和一个整数目标值 target &#xf…

阿波罗登月需要解决飞行控制问题,数学家卡尔曼在维纳控制的基础上提出了卡尔曼滤波

说到登月&#xff0c;很多人只想到和火箭以及航天器相关的技术&#xff0c;其实登月离不开信息技术的革命。因为从飞行控制到远程通信&#xff0c;都需要解决很多过去从未遇到过的难题。 登月首先要保证在月球上着陆的地点准确&#xff0c;而且要保证返回火箭和飞船能够在月球轨…

【LeetCode: 211. 添加与搜索单词 - 数据结构设计 + 前缀树】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

npm install没有创建node_modules文件夹

问题记录 live-server 使用时 报错&#xff1a;live-server : 无法将“live-server”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 npm install 安装 但是 这时npm install没有创建node_modules文件夹&#xff0c;只生成package-lock.json文件 方法一&#xff1a; 手…

CEF c++调用JS,并获得JS返回值的 流程

相关章节: CEF JS与c++能够交互的原理 以及 JS 调用C++的流程分析 CEF 之 Render进程 与 Browser进程通信 目录

【笔试48天强训】day05

统计回文1 “回文串”是一个正读和反读都一样的字符串&#xff0c;比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串&#xff0c;生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串…

通过Electron打包前端项目为exe

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;爱蹦跶的大A阿 &#x1f525;当前正在更新专栏&#xff1a;《JavaScript保姆级教程》、《VUE》、《Krpano》 ✨ 正文 1、 拉取electron官网上的demo&#xff0c;拉下来之后安装依赖&#xff0c;项目跑起来之后&#xff0c;就…

第十篇 - 如何利用人工智能技术做好营销流量整形管理?(Traffic Shaping)- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市​​​​​​​。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先…

上海计算机学会竞赛平台2024.1月月赛丙组T1 成绩等第题解

题目描述 给定一个在到之间的整数 &#xff0c;请将它转成等第&#xff0c;规则如下&#xff1a; 为 A为 B为 C为 D为 F 输入格式 单个数字表示 输出格式 单个字符表示答案 数据范围 样例数据 输入: 93 输出: A 输入: 44 输出: F

公网IP与私有IP及远程互联

1.公网有私有IP及NAT 公网IP是全球唯一的IP&#xff0c;通过公网IP&#xff0c;接入互联网的设备是可以访问你的设备。但是IPV4资源有限&#xff0c;一般ISP(Internet Service Provider)并不会为用户提供公网IP。所以家里的计算机在公司是没法直接使用windows远程桌面直接访问…

Arrays类常用方法详解(源码分析)

Arrays.equals&#xff08;&#xff09; 众所周知&#xff0c;equals方法是比较里面的内容是否相等的方法&#xff0c;那Arrays中的equals&#xff08;&#xff09;方法&#xff0c;就是重写了Object中equals&#xff08;&#xff09;&#xff0c;用来比较数组中的内容是否相等…

Find My产品越来越得到市场认可,伦茨科技ST17H6x芯片赋能厂家

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…

LCR 164. 破解闯关密码

解题思路&#xff1a; 贪心 class Solution {public String crackPassword(int[] password) {String[] strs new String[password.length];for(int i 0; i < password.length; i)strs[i] String.valueOf(password[i]);Arrays.sort(strs, (x, y) -> (x y).compareTo(…

考研复习c语言初阶(1)

本人准备考研&#xff0c;现在开始每天更新408的内容&#xff0c;目标这个月结束C语言和数据结构&#xff0c;每天更新~ 一.再次认识c语言 C语言是一门通用计算机编程语言&#xff0c;广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产生…

面试题:单例模式输出静态变量

面试题 一、写出两种情况下的运行结果。第一种如下面的代码所示&#xff1b;第二种是把“1”所在行注释掉&#xff0c;把“2”行的注释去掉。 class Singleton {private static Singleton singleton new Singleton(); //1static int i;static int j 0;//private static Sing…