国内支持OAuth授权获取用户信息的平台有很多,这里为你整理一个完整的列表:
📊 主流平台对比表
| 平台 |
OAuth支持 |
审核难度 |
用户基数 |
适合场景 |
备注 |
| 微信 |
⭐⭐⭐⭐⭐ |
困难 |
巨大 |
社交/电商/内容 |
需要企业资质 |
| QQ |
⭐⭐⭐⭐ |
中等 |
巨大 |
游戏/娱乐/社交 |
个人可申请 |
| 微博 |
⭐⭐⭐⭐ |
容易 |
大 |
媒体/社交/内容 |
文档完善 |
| 支付宝 |
⭐⭐⭐⭐ |
困难 |
巨大 |
电商/支付/生活 |
需要签约 |
| 钉钉 |
⭐⭐⭐ |
中等 |
大 |
企业/办公 |
企业场景 |
| GitHub |
⭐⭐⭐⭐⭐ |
无 |
开发者 |
技术社区 |
国际平台 |
| Gitee |
⭐⭐⭐⭐ |
容易 |
开发者 |
技术社区 |
国内GitHub |
| 小米 |
⭐⭐⭐ |
中等 |
中等 |
智能硬件/IoT |
设备联动 |
| 华为 |
⭐⭐⭐ |
困难 |
大 |
硬件/云服务 |
企业合作 |
| 飞书 |
⭐⭐⭐ |
中等 |
增长快 |
企业协作 |
字节系 |
🎯 重点推荐平台
1. 微博(最简单)
特点:文档齐全,个人开发者可申请,审核快
申请地址:https://open.weibo.com/
// 微博OAuth配置
define('WEIBO_CLIENT_ID', '');
define('WEIBO_CLIENT_SECRET', '');
define('WEIBO_REDIRECT_URI', 'https://你的域名.com/weibo-callback.php');
// API端点
define('WEIBO_AUTH_URL', 'https://api.weibo.com/oauth2/authorize');
define('WEIBO_TOKEN_URL', 'https://api.weibo.com/oauth2/access_token');
define('WEIBO_USER_URL', 'https://api.weibo.com/2/users/show.json');
2. 钉钉(企业场景)
特点:适合企业内部应用,API丰富
申请地址:https://open.dingtalk.com/
// 钉钉OAuth配置
define('DINGTALK_APP_KEY', '');
define('DINGTALK_APP_SECRET', '');
define('DINGTALK_REDIRECT_URI', 'https://你的域名.com/dingtalk-callback.php');
// 支持扫码登录和密码登录两种方式
3. 飞书(字节系生态)
特点:文档现代化,功能丰富
申请地址:https://open.feishu.cn/
// 飞书OAuth配置
define('FEISHU_APP_ID', '');
define('FEISHU_APP_SECRET', '');
define('FEISHU_REDIRECT_URI', 'https://你的域名.com/feishu-callback.php');
💡 微信生态(最重要的)
微信开放平台
申请难度:高,需要企业资质
适合:网站、APP、公众号等
// 微信开放平台OAuth
define('WECHAT_APP_ID', '');
define('WECHAT_APP_SECRET', '');
define('WECHAT_REDIRECT_URI', 'https://你的域名.com/wechat-callback.php');
// API端点
define('WECHAT_AUTH_URL', 'https://open.weixin.qq.com/connect/qrconnect');
define('WECHAT_TOKEN_URL', 'https://api.weixin.qq.com/sns/oauth2/access_token');
define('WECHAT_USER_URL', 'https://api.weixin.qq.com/sns/userinfo');
微信公众号
特点:可在微信内直接授权,无需跳转
// 公众号OAuth(静默授权)
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?" .
"appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
🎮 游戏娱乐类
Bilibili
特点:年轻用户群体,适合二次元、游戏社区
申请地址:https://openhome.bilibili.com/
// B站OAuth配置
define('BILIBILI_CLIENT_ID', '');
define('BILIBILI_CLIENT_SECRET', '');
define('BILIBILI_REDIRECT_URI', 'https://你的域名.com/bilibili-callback.php');
// 可以获取用户基本信息、粉丝数等
TapTap
特点:游戏玩家社区,垂直度高
申请地址:https://www.taptap.com/developer
🛠️ 开发者社区类
开源中国(OSChina)
特点:国内老牌开发者社区
申请地址:https://www.oschina.net/openapi
思否(SegmentFault)
特点:技术问答社区
申请地址:联系客服申请
🏢 企业服务类
企业微信
特点:企业内部应用,可与微信互通
// 企业微信OAuth
define('QYWX_CORP_ID', '');
define('QYWX_AGENT_ID', '');
define('QYWX_SECRET', '');
define('QYWX_REDIRECT_URI', 'https://你的域名.com/qywx-callback.php');
金山云
特点:WPS、金山文档生态
🔧 技术实现模板
通用OAuth类(可扩展)
<?php
abstract class OAuthProvider {
protected $client_id;
protected $client_secret;
protected $redirect_uri;
public function __construct($config) {
$this->client_id = $config['client_id'];
$this->client_secret = $config['client_secret'];
$this->redirect_uri = $config['redirect_uri'];
}
abstract public function getAuthUrl($state);
abstract public function getAccessToken($code);
abstract public function getUserInfo($access_token);
}
// 微博实现示例
class WeiboOAuth extends OAuthProvider {
public function getAuthUrl($state) {
$params = [
'client_id' => $this->client_id,
'redirect_uri' => $this->redirect_uri,
'response_type' => 'code',
'state' => $state,
'scope' => 'email'
];
return 'https://api.weibo.com/oauth2/authorize?' . http_build_query($params);
}
public function getAccessToken($code) {
// 实现获取token逻辑
}
public function getUserInfo($access_token) {
// 实现获取用户信息逻辑
}
}
?>
统一登录页面
<!DOCTYPE html>
<html>
<head>
<title>选择登录方式</title>
<style>
.login-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
max-width: 800px;
margin: 50px auto;
}
.login-btn {
display: flex;
flex-direction: column;
align-items: center;
padding: 30px;
border: 2px solid #eee;
border-radius: 10px;
text-decoration: none;
color: #333;
transition: all 0.3s;
}
.login-btn:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
.login-btn.wechat { border-color: #07C160; }
.login-btn.qq { border-color: #12B7F5; }
.login-btn.weibo { border-color: #E6162D; }
.login-btn.gitee { border-color: #C71D6F; }
.login-btn.dingtalk { border-color: #0086FA; }
.icon {
font-size: 40px;
margin-bottom: 15px;
}
</style>
</head>
<body>
<div class="login-grid">
<a href="wechat-login.php" class="login-btn wechat">
<div class="icon">💚</div>
<h3>微信登录</h3>
<p>使用微信账号快速登录</p>
</a>
<a href="qq-login.php" class="login-btn qq">
<div class="icon">🐧</div>
<h3>QQ登录</h3>
<p>适合游戏娱乐用户</p>
</a>
<a href="weibo-login.php" class="login-btn weibo">
<div class="icon">🧣</div>
<h3>微博登录</h3>
<p>快速接入,审核简单</p>
</a>
<a href="gitee-login.php" class="login-btn gitee">
<div class="icon">💻</div>
<h3>Gitee登录</h3>
<p>开发者专属登录方式</p>
</a>
<a href="dingtalk-login.php" class="login-btn dingtalk">
<div class="icon">📱</div>
<h3>钉钉登录</h3>
<p>企业用户最佳选择</p>
</a>
</div>
</body>
</html>
📦 一站式解决方案
1. Authing(推荐)
网址:https://authing.cn
特点:
- 支持微信、QQ、微博、钉钉等20+平台
- 提供统一API接口
- 有PHP SDK
- 免费额度足够小项目使用
// 使用Authing PHP SDK
composer require authing-sdk/php
use Authing\Auth\AuthenticationClient;
$client = new AuthenticationClient([
'appId' => 'your_app_id',
'appHost' => 'https://xxx.authing.cn'
]);
// 获取微信登录URL
$url = $client->buildAuthorizeUrl([
'provider' => 'wechat:webpage',
'redirectUri' => 'https://yourdomain.com/callback'
]);
2. 极验(GeeTest)
网址:https://www.geetest.com/
特点:除了验证码,也提供社交登录
3. 又拍云联盟登录
网址:https://www.upyun.com/products/open-sso
特点:集成多家平台
🔐 安全建议
必须实现的保护措施
1. **State参数验证**:防止CSRF攻击
2. **HTTPS强制**:生产环境必须使用
3. **令牌安全存储**:加密存储access_token
4. **权限最小化**:只请求必要的scope
5. **登录日志**:记录所有登录尝试
6. **频率限制**:防止暴力破解
会话管理
session_start();
// 安全的会话配置
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1); // HTTPS时启用
ini_set('session.use_strict_mode', 1);
// 生成CSRF token
function generateCSRFToken() {
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
return $_SESSION['csrf_token'];
}
🚀 部署建议
开发阶段
- 从 微博 或 Gitee 开始,审核简单
- 使用本地测试回调地址
- 实现基本的OAuth流程
生产环境
- 必备:微信 + QQ(覆盖90%用户)
- 可选:微博、Gitee、钉钉(按需添加)
- 备用:邮箱/手机验证码登录
数据库设计
-- 用户主表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100),
email VARCHAR(100),
phone VARCHAR(20),
created_at DATETIME
);
-- 第三方登录关联表
CREATE TABLE user_oauth (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
platform ENUM('wechat', 'qq', 'weibo', 'gitee', 'dingtalk'),
openid VARCHAR(100),
unionid VARCHAR(100),
access_token TEXT,
refresh_token VARCHAR(255),
expires_at DATETIME,
profile_json JSON,
UNIQUE KEY uniq_platform_openid (platform, openid),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
💰 成本考虑
| 平台 |
费用 |
审核时间 |
维护成本 |
| 微信 |
300元认证费 |
1-2周 |
高 |
| QQ |
免费 |
1-3天 |
中 |
| 微博 |
免费 |
即时 |
低 |
| Gitee |
免费 |
即时 |
低 |
| 钉钉 |
免费 |
1-3天 |
中 |
🎯 最终建议
个人项目/初创公司
- 首推微博:审核快,文档好
- 次选Gitee:开发者友好
- 备选QQ:覆盖广,但有审核
成熟产品
- 必须接入微信:用户基数大
- 配合QQ:覆盖年轻用户
- 按需添加:微博、钉钉等
企业/办公应用
- 钉钉/企业微信:首选
- 飞书:字节系生态
- 自定义OAuth:内部系统集成
总结:建议从 微博 或 Gitee 开始练手,然后根据你的实际用户群体逐步接入更多平台。如果需要快速上线,可以使用 Authing 这样的第三方服务。