first commit

This commit is contained in:
sexygoat
2026-04-11 14:42:14 +08:00
commit b962c9c716
62 changed files with 7323 additions and 0 deletions

1352
docs/API.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,192 @@
# 微信 H5 获取用户头像昵称(前端接入指南)
## 一、目标
在微信内打开 H5 页面,获取用户:
- 昵称nickname
- 头像headimgurl
- openid
---
## 二、核心方案
使用微信网页授权OAuth2
- 必须使用:`snsapi_userinfo`
- 才能获取头像 + 昵称
---
## 三、整体流程
```
用户进入页面
判断是否有 code
没有 → 跳微信授权
用户同意授权
微信回调(带 code
前端把 code 传给后端
后端换 token + 获取用户信息
返回前端
```
---
## 四、前端代码(可直接用)
### 1⃣ 获取 code 并跳授权
```js
const getCode = () => {
const params = new URLSearchParams(window.location.search);
return params.get("code");
};
const redirectToWxAuth = () => {
const appid = "你的appid";
const redirectUri = encodeURIComponent(window.location.href);
const url = `https://open.weixin.qq.com/connect/oauth2/authorize
?appid=${appid}
&redirect_uri=${redirectUri}
&response_type=code
&scope=snsapi_userinfo
&state=123#wechat_redirect`;
window.location.href = url;
};
// 执行
const code = getCode();
if (!code) {
redirectToWxAuth();
}
```
---
### 2⃣ 拿 code 调后端
```js
const code = new URLSearchParams(location.search).get("code");
if (code) {
fetch(`/api/wx/userinfo?code=${code}`)
.then(res => res.json())
.then(data => {
console.log("用户信息", data);
// data.nickname
// data.headimgurl
});
}
```
---
## 五、后端要做什么(你只需要对接)
前端只需要知道:
```http
GET /api/wx/userinfo?code=xxx
```
后端返回:
```json
{
"openid": "xxx",
"nickname": "张三",
"headimgurl": "https://xxx.jpg"
}
```
---
## 六、重要配置(必须)
### 1⃣ 微信后台配置
在公众号后台:
- 设置 → 开发 → 网页授权域名
- 填你的 H5 域名(必须)
---
### 2⃣ 必须在微信内打开
```js
const isWechat = /micromessenger/i.test(navigator.userAgent);
if (!isWechat) {
alert("请在微信中打开");
}
```
---
## 七、常见坑
### ❗1. redirect_uri 报错
原因:域名没配置
---
### ❗2. 一直循环授权
原因:没有正确判断 code
---
### ❗3. 拿不到头像昵称
原因:用了 `snsapi_base`
---
### ❗4. 页面刷新重复授权
解决:拿到 code 后清掉
```js
window.history.replaceState({}, "", location.pathname);
```
---
## 八、优化建议(推荐)
### ✔️ 第一次
-`snsapi_userinfo`
- 获取完整用户信息
### ✔️ 后续
-`snsapi_base`
- 用 openid 换你自己的用户数据
---
## 九、适用范围
| 场景 | 是否可用 |
|------|----------|
| 微信内 H5 | ✅ |
| 小程序 | ❌ |
| 浏览器打开 | ❌ |
---
## 十、一句话总结
👉 想拿头像昵称:
必须走
**微信授权 + snsapi_userinfo + 后端换数据**
---
## 完

View File