2024 年为网站接入 Google OAuth 登录
但无论是否做海外的产品,对于用户认证、授权相关的逻辑还是那些,之前在国内我搞了一个微寻,但很快就被 微信封杀 了,索性我也不再去弄。
而海外就简单太多了,Google、Github、Facebook、X 等这些平台都是可以 OAuth 登录的,我选择 Google OAuth,而且我平时非常喜欢有 Google OAuth 的网站,有 Google OAuth 的网站我是绝对不会去使用邮箱或者其它渠道进行注册登录的。
我甚至认为,只要有 Google OAuth 就够了,起步阶段不必花费时间去搞什么邮箱登录,从我的认知来看,海外的网站一般都是邮箱登录和其它第三方登录。
一、为什么要用 OAuth 呢?
一句话:省事儿。
一般的 OAuth 都会提供:用户名和头像,我们以邮箱账号注册为例,分析一下一个网站对于这种注册登录机制需要哪些逻辑:
- 注册页面
- 注册逻辑
- 邮箱确认逻辑(包含发送邮箱验证码或确认链接)
- 登录页面
- 登录逻辑
- 忘记密码(向邮箱发送验证码或确认链接)
- 修改密码
- 用户中心
- 修改密码
- 修改头像
而以上这些,在我决定只采用 Google OAuth 授权登录以后都不存在了,甚至我的用户表里连密码字段都不需要存在。
二、申请 Google OAuth
新建项目
登录 Google Cloud Console 新建一个项目:
然后选择这个新建的项目,并点击进入 API 和服务
:
OAuth 权限请求页面
点击 OAuth 权限请求页面
,选择 External
:
OAuth consent screen
点击 创建
以后会跳转到 OAuth consent screen
选项中,必填的参数有:
- 应用名称
- 用户支持电子邮件
- 开发者联系信息 - 电子邮件地址
范围
在 范围
选项页面中,点击 添加或移除范围
,选择这三个,然后点击 更新
:
Test users
在 Test users
选项页面中,点击 ADD USERS
添加自己的 Google 账号邮箱,保存并继续:
Summary
在 Summary
选项页面中,直接点击 BACK TO DASHBOARD
。
凭据
在 凭据
菜单中点击 创建凭据
:
选择 OAuth 客户端 ID
:
应用类型
选择Web 应用
已获授权的 JavaScript 来源
里添加上 本地开发的域名已获授权的重定向 URI
里添加上 本地开发的回调地址
信息填写完成以后,点击 创建
,会弹出来 OAuth 客户端信息窗口,需要保存好 客户端 ID
和 客户端密钥
:
三、Laravel 项目接入 Google OAuth
在 Laravel 项目中接入 Google OAuth 非常简单,官方提供了一个 Laravel Socialite 包。
安装并配置 Laravel Socialite:
1 | composer require laravel/socialite |
在 config/services.php
中添加一个 Google OAuth 的配置信息:
1 | 'google' => [ |
在项目根目录的 .env
文件中添加这三个环境变量,GOOGLE_REDIRECT_URL
是用户在使用 Google 账号登录以后,Google 会携带用户信息请求这个地址。
配置路由
在 web.php
中添加两条路由:
1 | // 跳转到 Google 授权页面 |
创建控制器
创建一个 AuthController
并添加两个方法:
redirect()
:用户在前端页面上点击了使用 Google 登录
按钮以后,跳转到这个路由,然后在这个方法里跳转到 Google 授权登录页面。callback()
:用户确认使用 Google 授权登录以后,Google 携带用户相关信息请求此路由。
1 |
|