微信小程序授权登录代码
时间: 2023-09-22 17:13:58 浏览: 82
微信小程序授权登录的代码可以分为两部分,前端和后端。
前端代码:
1. 在小程序中添加一个按钮,用于触发授权登录:
```html
<button type="primary" open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">授权登录</button>
```
2. 在对应的 Page 或 Component 中添加 onGetUserInfo 方法:
```javascript
onGetUserInfo: function (e) {
if (e.detail.userInfo) {
// 用户授权成功,获取用户信息
const userInfo = e.detail.userInfo;
// 调用后端接口进行登录
wx.login({
success: function (res) {
if (res.code) {
// 将 code 发送给后端
wx.request({
url: 'https://your-backend.com/login',
data: {
code: res.code,
userInfo: userInfo
},
success: function (response) {
// 登录成功,保存登录态
wx.setStorageSync('token', response.data.token);
wx.showToast({
title: '登录成功',
icon: 'success',
duration: 2000
});
}
});
} else {
// 登录失败
console.log('登录失败!' + res.errMsg)
}
}
});
} else {
// 用户拒绝授权
console.log('用户拒绝授权!');
}
}
```
后端代码:
1. 创建一个路由,用于处理登录请求:
```javascript
const express = require('express');
const router = express.Router();
const request = require('request');
router.post('/login', function(req, res) {
const code = req.body.code;
const userInfo = req.body.userInfo;
// 发送请求给微信服务器,获取 openid 和 session_key
request.get(`https://api.weixin.qq.com/sns/jscode2session?appid=your_appid&secret=your_secret&js_code=${code}&grant_type=authorization_code`, function (error, response, body) {
if (!error && response.statusCode === 200) {
const data = JSON.parse(body);
const openid = data.openid;
const sessionKey = data.session_key;
// TODO: 根据 openid 和 sessionKey 进行登录操作,返回登录态 token
const token = 'your_token';
res.json({
token: token
});
} else {
res.status(500).send('登录失败!');
}
});
});
module.exports = router;
```
2. 在 app.js 中引入该路由:
```javascript
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// 引入路由
const loginRouter = require('./routes/login');
app.use(loginRouter);
app.listen(3000, function () {
console.log('Server is running on port 3000!');
});
```
注意:代码中的 your_appid 和 your_secret 需要替换为你自己的微信小程序 AppID 和 AppSecret。
阅读全文