Google第三方授权登录

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

很多网站登录都接入了三方登录,如:

最近接了海外项目,需要接入Google授权登录,正好记录一下,也分享给大家。

02 概述

主流的三方授权的基本都是基于OAuth 2.0的技术方案实现的,Google由于国内地域问题授权可能用的比较少,但是流程基本大同小异。

国内最常见的就是腾讯系的微信小程序授权就是借鉴了OAuth 2.0技术方案改进而来,大致流程都一样。

第三方授权的流程大致分为四步:

  • 跳转至三方产品登录
  • 三方返回授权码code
  • 通过授权码向第三方换取access_token
  • 通过access_token调用三方产品的API获取需要的信息

Google授权提供了多种接入方式:

我们以Web应用为例,我们看下整体的流程和说明:

03 前期准备

在对接Google授权之前,我们需要创建授权凭据,用来获取固定的参数。

官网地址:developers.google.com/identity/pr...

3.1 创建项目

根据官方传送门,直接跳转Google Cloud,在客户端里面创建项目,这里使用:simonking-google

3.2 配置授权平台

按照提示完成信息提交即可。

3.3 创建客户端

完成上面的两个才能创建客户端。

同样按照提示填写完信息即可。

创建完客户端之后,会显示我们的客户端ID和客户端秘钥。客户端秘钥只能展示一次。我们可以通过下载JSON,保存其关键信息。

信息格式如下:

json 复制代码
{
  "web": {
    "client_id": "452972897795-*********.apps.googleusercontent.com",
    "project_id": "tonal-****-b4",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "GOCS*******Yko",
    "redirect_uris": ["https://****.com"],
    "javascript_origins": ["https://*****.com"]
  }
}

04 授权流程

授权流程分了6步,

其中第一步需要的部分参数就是从上面的json中获取的。

4.1 重定向Google

这是第1、2步的合并,拼接好参数:

js 复制代码
 https://accounts.google.com/o/oauth2/v2/auth
?scope=https://www.googleapis.com/auth/userinfo.email
&include_granted_scopes=true
&response_type=token
&state=3***5310BFE
&redirect_uri=https://***.com
&client_id=452972897795-6m34anl4m*****apps.googleusercontent.com

访问之后会重定向到Google登录的页面:

4.2 获取access_token

这是第3,4,5步。登录Google之后会重定向到redirect_uri参数的地址,并携带access_token。

返回信息如下:

js 复制代码
https://***.com/#
state=3EAB3****0BFE&
iss=https://accounts.google.com&
access_token=ya29.a0AT3o******_NeqMJ37Uw0206&
token_type=Bearer&
expires_in=3599&
scope=email%20https://www.googleapis.com/auth/userinfo.email%20openid&
authuser=0&
prompt=consent

4.3 获取用户信息

有了access_token就可以获取Google的账号信息了。

js 复制代码
https://www.googleapis.com/oauth2/v2/userinfo?access_token=ya29.a0AT3o******_NeqMJ37Uw0206

获取的信息如下:

获取到Google账号的信息就可和业务系统做关联或者其他业务操作了。

05 小结

不同的产品,接入的方式上可能不同,但是只要技术栈类似,那么接入也差不了多少。对接Google账号。可能面临最大的问题就是网络限制的问题。当然,既然公司要接入,网络也会有专门的人会帮忙打通。

相关推荐
深蓝AI6 分钟前
10 万星投给了记忆:claude-mem 把编码 Agent 的断片压进 SQLite,值不值得装
人工智能·程序员
2301_780789665 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设6 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
滴滴答答哒7 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
步行cgn7 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川7 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵7 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
小贺儿开发7 小时前
《流光绘忆》Unity 沉浸式光影互动
科技·unity·ai·程序员·工具·互动·光影
秋天的怀念_David7 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1008 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品