国内社媒/开放平台OAuth登录演示(PHP 5.6~8.x) v1.0

0 0 287 2026-06-10
PHP Simplified Chinese (3/5)
Author:PHPDisk Team

Overview

本项目将微信、QQ、微博、钉钉、飞书、企业微信、抖音、华为账号、小米账号等常见渠道的OAuth流程封装为可切换的演示实例。通过统一模式封装多家渠道,支持授权码模式、Session保存state防CSRF、统一回调脚本,未配置密钥的平台自动隐藏按钮。适合作为团队OAuth接入清单与可运行样板,便于快速集成到业务系统。

Source details

国内社媒 / 开放平台 OAuth 登录演示(PHP 5.6 ~ 8.x)

参考 gmail-oauth-login-php-cn-sample授权码模式Session 保存 state 防 CSRF统一回调脚本思路,将微信、QQ、微博、钉钉、飞书、企业微信、抖音、华为账号、小米账号等常见渠道的 OAuth 流程封装为可切换的演示实例。未在 config.php 中填写密钥的平台不会出现在首页按钮中,便于你只开启需要测试的渠道。

支付宝开放平台用户授权依赖 RSA2 签名 换 token,本目录不内置签名逻辑,请使用 alipay_oauth_note.php 中的说明与官方 SDK。

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

各平台 API 申请与回调配置教程:见目录 docs/API申请指南/README.md(与 config.php 各区块注释中的控制台链接一致)。

应用场景

  • 面向国内用户的网站、活动页、企业门户需要 微信 / QQ / 钉钉 / 飞书 等一键登录,减少注册摩擦。
  • 中台或统一账号系统需要 多渠道路由:同一回调入口、不同 oauth_start.php?p= 平台标识。

用户痛点

  • 各平台 OAuth 参数、scope、换 token 接口差异大,重复造轮子成本高。
  • state 防 CSRF、HTTPS 回调一致性、Session 安全等细节易被忽略。
  • 文档分散在各家开放平台,新人上手周期长。

本项目解决的问题

  • 无重型框架 前提下,用统一模式封装多家渠道:启动授权、回调换 token、资料归一化写入 Session。
  • 未配置密钥的平台 自动隐藏按钮,便于分阶段开通与演示。

项目价值说明

  • 一份代码对照多平台实现,适合作为团队 OAuth 接入清单 + 可运行样板,再与自有用户表绑定即可落地。

环境要求

  • PHP 5.6 ~ 8.x(使用 hash_equals;随机串优先 random_bytes
  • 扩展:opensslcurljsonsession
  • 线上环境建议 HTTPS;各平台后台登记的回调 URL 须与实际访问 URL 完全一致

快速开始

  1. social-oauth-login-php-cn-sample 目录置于 Web 可访问路径(URL 路径建议不要含空格,与 Google 示例说明相同)。
  2. 编辑根目录 config.php,至少填写 OAUTH_REDIRECT_URI(一般为 https://你的域名/.../oauth_callback.php;仓库已带模板文件,可直接改)。
  3. 在需要测试的平台开发者后台创建应用,将同一 OAUTH_REDIRECT_URI 登记为授权回调地址,并在 config.php 中填写对应常量(见首页列表或下表)。
  4. 访问 index.php,点击已配置的平台按钮完成授权;成功后用户信息保存在 $_SESSION['social_login'] 中(字段已做简单归一化,并含 profile_raw 供调试)。

配置常量与平台 id(oauth_start.php?p=

平台 id 说明 config.php 常量
wechat 微信开放平台网站应用扫码 OAUTH_WECHAT_APPID, OAUTH_WECHAT_SECRET
qq QQ 互联 OAUTH_QQ_APPID, OAUTH_QQ_APPKEY
weibo 微博 OAUTH_WEIBO_APPKEY, OAUTH_WEIBO_APPSECRET
dingtalk 钉钉浏览器 OAuth2 OAUTH_DINGTALK_CLIENT_ID, OAUTH_DINGTALK_CLIENT_SECRET
feishu 飞书自建应用网页授权 OAUTH_FEISHU_APP_ID, OAUTH_FEISHU_APP_SECRET
work_wechat 企业微信网页授权(见官方场景限制) OAUTH_WW_CORP_ID, OAUTH_WW_CORP_SECRET, OAUTH_WW_AGENT_ID
douyin 抖音开放平台 OAUTH_DOUYIN_CLIENT_KEY, OAUTH_DOUYIN_CLIENT_SECRET
huawei 华为账号 OAuth 2.0 OAUTH_HUAWEI_CLIENT_ID, OAUTH_HUAWEI_CLIENT_SECRET
xiaomi 小米账号 OAUTH_XIAOMI_APP_ID, OAUTH_XIAOMI_APP_SECRET
支付宝 说明页 OAUTH_ALIPAY_APP_ID(可选,仅用于说明页展示)

文件说明

文件 作用
docs/API申请指南/ 各平台 API 申请地址与分步教程(入口 README.md
config.php 本地配置(含各平台控制台链接注释)
inc/oauth_social_version.php 程序版本号默认值(加载于 config.php 之后)
inc/oauth_common.php HTTP、随机串、JWT payload 解析等公共函数
inc/oauth_social_providers.php 各平台授权 URL、换 token、拉取资料
inc/oauth_social.php 注册表与 Session 字段归一化
oauth_start.php 写入 pending state 并跳转授权页
oauth_callback.php 校验 state、换 token、写 Session
index.php 演示首页
logout.php 退出 Session
alipay_oauth_note.php 支付宝 RSA2 / SDK 接入说明

整合到业务系统时的注意点

  1. 企业微信:示例使用「网页授权」链接,典型场景依赖企业微信客户端内打开;扫码登录等能力以官方最新文档为准。
  2. 飞书:若调整 scope,需在开发者后台为应用申请对应权限,否则授权页可能报错。
  3. 密钥与合规client_secret 等仅放服务端;生产环境请结合自有用户体系做绑定与审计,勿直接信任第三方返回的邮箱/手机号(平台文档亦常有提示)。

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=social-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!