微信登录
最后更新于:2022-04-02 03:39:50
[TOC]
## 微信登录
流程:
1. 调用[wx.login()](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html)获取**临时登录凭证code**,并回传到开发者服务器。
2. 调用[auth.code2Session](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html)接口,换取**用户唯一标识 OpenID**、 用户在微信开放平台帐号下的**唯一标识UnionID**(若当前小程序已绑定到微信开放平台帐号) 和**会话密钥 session\_key**。
### 方式一: 通过 button
通过button 来获取用户信息, 设置 open-type="getUserInfo"
```
// js
getUserInfo(e) {
if (e.detail.errMsg == 'getUserInfo:ok') {
//对数据进行操作
// 得到 code
uni.request({
url: 'https://example.com/onLogin',
data: {
code: code
}
})
} else {
this.$operate.toast({
title: '授权失败无法登录!'
})
}
},
```
获取到 code 后 返回给后台
在后台发起请求
```
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
```
返回
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| openid | string | 用户唯一标识 |
| session\_key | string | 会话密钥 |
| unionid | string | 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见[UnionID 机制说明](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html)。 |
| errcode | number | 错误码 |
| errmsg | string | 错误信息 |
### 方式二: uni.login
```
// js
userInfo() {
//获取code
uni.login({
provider: 'weixin',
success(login) {
console.log(login);
// 得到 code
uni.request({
url: 'https://example.com/onLogin',
data: {
code: login.code
}
})
}
})
}
```
';