Gmail / Google OAuth 2.0 登录演示(PHP 5.6 ~ 8.x) v1.0

0 0 2 2026-06-10
PHP Simplified Chinese (2/5)
Author:cs

Overview

演示如何把「使用 Google 账号登录」接到自己的 PHP 站点。代码刻意保持精简,便于复制到现有项目的控制器或路由中。提供 oauth_start / oauth_callback / logout 最小闭环与可复用封装,Session 中保存规范化用户信息。配置与路径建议写清,减少 redirect_uri_mismatch 类问题。

Source details

Gmail / Google OAuth 2.0 登录演示(PHP 5.6 ~ 8.x)

中文市场示例:演示如何把「使用 Google 账号登录」接到自己的 PHP 站点。代码刻意保持精简,便于复制到现有项目的控制器或路由中。

程序版本号:常量 GMAIL_OAUTH_APP_VERSION(默认 inc/gmail_oauth_version.php;可在 config.php 覆盖);首页页脚展示。

应用场景

  • 面向全球用户的产品需要 Google 一键登录,减少密码管理与钓鱼面。
  • 企业内部系统已使用 Google Workspace,希望用 企业身份 快速登录内网应用。

用户痛点

  • OAuth 2.0 授权码模式涉及 Console 配置、回调白名单、state 校验与 token 交换,初次集成门槛高。
  • 与业务用户体系打通时,不清楚应在何处做 查找或注册session_regenerate_id

本项目解决的问题

  • 提供 oauth_start / oauth_callback / logout 最小闭环与 inc/oauth_google.php 可复用封装,Session 中保存规范化用户信息。
  • 配置与路径建议写清,减少 redirect_uri_mismatch 类问题。

项目价值说明

  • 代码量小、依赖少,适合直接迁入现有 PHP 项目或作为安全评审对照样本。

环境要求

  • PHP 5.6 ~ 8.x(最低需 hash_equals;PHP 7+ 优先使用 random_bytes 生成 state)
  • 扩展:opensslcurljsonsession(通常默认启用)
  • 建议线上启用 HTTPS;本地可用 HTTP,但需在 Google Cloud Console 中登记完整回调 URL

仓库内路径

本示例位于:gmail login/gmail-oauth-login-php-cn-sample/(若从压缩包解压,请保持该目录结构或整体拷贝到站点目录)。

快速开始

  1. gmail-oauth-login-php-cn-sample 目录置于 Web 可访问路径。

    • 推荐:配置虚拟主机或 URL 重写,使站点路径不含空格(例如 http://localhost/gmail-oauth-login-php-cn-sample/)。
    • 若必须保留上级目录名含空格(gmail login),浏览器需使用空格编码 %20,且 Google Console 登记的 redirect_uri 必须与最终访问 URL 完全一致
  2. 复制 config.example.phpconfig.php,填写:

    • GOOGLE_CLIENT_ID
    • GOOGLE_CLIENT_SECRET
    • GOOGLE_REDIRECT_URI必须与 Google Console「已授权的重定向 URI」完全一致,一般为
      http://你的域名/.../oauth_callback.php(末尾脚本名按实际路径)。
  3. 打开 Google Cloud ConsoleAPIs & ServicesCredentials,创建 OAuth 2.0 Client ID(Web application),在 Authorized redirect URIs 中填入上一步的 GOOGLE_REDIRECT_URI,保存。

  4. 浏览器访问 index.php,点击「使用 Google 登录」完成授权;成功后用户信息会保存在 PHP Session 的 $_SESSION['google_login'] 中。

演示首页底部设有官网入口,如需了解更多产品与文档可由此访问(链接地址在 index.php 中配置,整合到自己站点时可按需修改或删除)。

文件说明

文件 作用
config.example.php 配置模板(可选覆盖 GMAIL_OAUTH_APP_VERSION
inc/gmail_oauth_version.php 程序版本号默认值
inc/oauth_google.php 构造授权 URL、用 code 换 token、拉取 userinfo;整合时可只迁移此文件与你的配置方式
oauth_start.php 写入 state 并跳转 Google
oauth_callback.php 校验 state、换 token、写入 Session
index.php 演示首页
logout.php 退出演示 Session

整合到自己网站时的建议

  1. 会话与安全:生产环境在登录成功后执行 session_regenerate_id(true)(本示例已在回调中调用);根据框架使用其 Session/Cookie 策略。
  2. 用户落地:在 oauth_callback.php 拿到 $user 后,用你的用户表按 email 或 Google 返回的 id(userinfo 中的唯一标识)做「查找或注册」,不要依赖本示例中的 Session 结构。
  3. 密钥GOOGLE_CLIENT_SECRET 仅放在服务端配置文件或环境变量,勿提交到公开仓库。
  4. redirect_uri:开发、预发、生产若域名不同,请在 Google Console 中为每个环境各添加一条回调 URI,并与各环境 GOOGLE_REDIRECT_URI 一致。

更通用的概念说明见仓库内:gmail login/gmail_oauth_安装配置指南.md


Project: PHPDisk - 私有云存储解决方案
This is NOT a freeware, use is subject to license terms.
Website: https://www.phpdisk.com
Author: PHPDisk Team ( admin@phpdisk.com )
Copyright (C) 2008-2026 PHPDisk Team. All Rights Reserved.

如需定制功能,或查看更多示例与源码索引,请访问:https://code.phpdisk.com/?utm_source=gmail-oauth-php-cn-readme

Archive contents

Loading file tree…
No files to display in this archive.
    Too many files to show. Displaying a partial listing.

    Comments

    No comments yet—be the first!