用户授权处理!微信小程序开发实用技巧
发布时间: 2024-04-30 20:53:59 阅读量: 83 订阅数: 59
![用户授权处理!微信小程序开发实用技巧](https://images2018.cnblogs.com/blog/1227538/201805/1227538-20180529195554915-740483500.png)
# 2.1 授权流程详解
### 2.1.1 授权发起步骤
1. **发起授权请求:**小程序调用 `wx.login` 接口发起授权请求,获取临时登录凭证 `code`。
2. **用户授权:**用户在小程序授权页面上进行授权,同意或拒绝授权。
3. **授权回调:**授权成功后,微信服务器会向小程序的 `redirect_uri` 地址发起回调请求,携带 `code` 和 `state` 参数。
### 2.1.2 授权回调处理
1. **校验 `state` 参数:**小程序服务器校验 `state` 参数是否与发起授权请求时一致,防止 CSRF 攻击。
2. **获取 access_token:**使用 `code` 换取 `access_token`,用于获取用户授权信息。
3. **获取用户授权信息:**使用 `access_token` 调用 `wx.getUserInfo` 接口获取用户授权信息,包括头像、昵称等。
# 2. 微信小程序用户授权流程
### 2.1 授权流程详解
#### 2.1.1 授权发起步骤
1. **获取用户授权码:**
- 调用 `wx.login` 接口获取 `code`,`code` 是用户授权码,有效期 5 分钟。
- 参数:`{ success: function(res) {...}, fail: function(res) {...}, complete: function(res) {...} }`
- 返回值:`{ code: string, errMsg: string }`
2. **发起授权请求:**
- 调用 `wx.request` 接口发起授权请求,将 `code` 传递给服务器。
- 参数:`{ url: string, data: object, method: string, success: function(res) {...}, fail: function(res) {...}, complete: function(res) {...} }`
- 请求地址:`/wx/auth`
- 请求参数:`{ code: string }`
#### 2.1.2 授权回调处理
1. **服务器端处理:**
- 服务器收到请求后,根据 `code` 向微信服务器换取 `access_token` 和 `openid`。
- `access_token` 是小程序与微信服务器交互的凭证,有效期 2 小时。
- `openid` 是用户在小程序内的唯一标识。
- 返回值:`{ access_token: string, openid: string, expires_in: number }`
2. **小程序端处理:**
- 小程序收到服务器返回的 `access_token` 和 `openid`,将其存储在本地。
- 之后小程序可以利用 `access_token` 和 `openid` 进行后续操作,如获取用户信息、发起支付等。
### 2.2 授权类型与范围
#### 2.2.1 基本信息授权
- **授权范围:**获取用户的基本信息,如昵称、头像、性别等。
- **授权方式:**调用 `wx.getUserInfo` 接口。
- **参数:**`{ success: function(res) {...}, fail: function(res) {...}, complete: function(res) {...} }`
- **返回值:**`{ userInfo: object, errMsg: string }`
#### 2.2.2 敏感信息授权
- **授权范围:**获取用户的敏感信息,如地理位置、通讯地址、手机号码等。
- **授权方式:**调用 `wx.authorize` 接口。
- **参数:**`{ scope: string, success: function(res) {...}, fail: function(res) {...}, complete: function(res) {...} }`
- **返回值:**`{ errMsg: string }`
| 授权类型 | 授权范围 | 授权方式 | 参数 | 返回值 |
|---|---|---|---|---|
| 基本信息授权 | 昵称、头像、性别 | `wx.getUserInfo` | `{ success: function(res) {...}, fail: function(res) {...}, complete: function(res) {...} }` | `{ userInfo: object, errMsg: string }` |
| 敏感信息授权 | 地理位置、通讯地址、手机号码 | `wx.authorize` | `{ scope: string, success: function(res) {...}, fail: function(res) {...}, complete: function(res) {...} }` | `{ errMsg: string }` |
### 2.3 授权失败处理
#### 2.3.1 授权拒绝原因
- **用户拒绝授权:**用户在授权弹窗中点击“拒绝”。
- **授权超时:**用户在授权弹窗中未在规定时间内做出选择。
- **授权失败:**由于网络或其他原因导致授权请求失败。
#### 2.3.2 授权失败应对策略
- **提示用户:**向用户解释授权失败的原因,并引导用户重新授权。
- **使用默认值:**对于非必须授权的信息,可以使用默认值代替。
- **限制功能:**对于需要授权才能使用的功能,在用户授权失败时限制其使用。
# 3. 微信小程序用户授权实践
### 3.1 微信小程序授权登录
#### 3.1.1 登录流程与实现
**1. 前端发起登录请求**
```javascript
wx.login({
success: function(res) {
if (res.code) {
// 获取到 code,发送给服务器端进行登录操作
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
})
```
**2. 服务端获取用户登录信息**
```php
$code = $_REQUEST['code'];
$appid = 'wx1234567890';
$secret = 'abcdefghijk';
$url = "https://api.we
```
0
0