第一次用Uniapp写微信小程序,由于Uniapp并不在微信的生态内,因此获取用户opnid的方式也相对来说没那么简单。
在微信小程序开发中,比较常见的就是获取用户的头像及昵称,Uniapp为我们封装了获取用户信息的API-uni.getUserInfo(OBJECT)
调用这个方法的话,程序会提示应用授权,这个授权请求是不是很熟悉。
点击允许后,回调结果中会就会显示用户的头像及昵称了。
头像及昵称是获取了,那么如何在Uniapp中获取用户的openid呢?下图是微信官方的小程序登录说明文档,文中可以看到,在用官方的微信开发者工具开发微信小程序时,需要先调用wx.login()方法获取code,在利用code从微信服务端获取用户的openid。
Uniapp也未我们封装了相应的API-uni.login(OBJECT)与uni-id用户体系。
通过uni.login(),我们可以获取上文中提到的code。
接下来我们就需要利用获取到的code从微信服务端获取用户的openid,这一步,我们就可以使用uni-id用户体系实现,仅需访问云函数,就能获取用户的openid,下面将会具体描述uni-id的安装及使用方法。
去插件市场搜索uni-id,导入插件,这样uni-id就会自动安装到你的项目中了。
安装完成之后一般都需要按照图中红框内的要求创建一个config.json文件,文件内容如下,appid和appsecret需要填入自己的,其他不变。
{
"passwordSecret": "bctos-weixin-h5",
"tokenSecret": "bctos-weixin-h5",
"tokenExpiresIn": 7200,
"tokenExpiresThreshold": 600,
"passwordErrorLimit": 6,
"passwordErrorRetryTime": 3600,
"autoSetInviteCode": false,
"forceInviteCode": false,
"app-plus": {
"tokenExpiresIn": 2592000,
"oauth" : {
"weixin" : {
"appid" : "weixin appid",
"appsecret" : "weixin appsecret"
},
"apple": {
"bundleId": "your APP bundleId"
}
}
},
"mp-weixin": {
"oauth" : {
"weixin" : {
"appid" : "这里是你微信小程序的appid",
"appsecret" : "这里是你微信小程序的appsecret"
}
}
},
"mp-alipay": {
"oauth" : {
"alipay" : {
"appid" : "alipay appid",
"privateKey" : "alipay privateKey"
}
}
},
"service": {
"sms": {
"name": "your app name",
"codeExpiresIn": 180,
"smsKey": "your sms key",
"smsSecret": "your sms secret"
},
"univerify": {
"appid":"your appid",
"apiKey": "your apiKey",
"apiSecret": "your apiSecret"
}
}
}
新建云函数usr-login,代码如下。
const uniID = require('uni-id')
exports.main = async function(event,context) {
// 如下旧写法依然支持
// const res = await uniID.loginByWeixin(event.code)
// const res = await uniID.loginByWeixin({
// code: event.code
// })
const res = await uniID.loginByWeixin(event.code)
return res
}
至此,你就能够获取用户的openid和用户的头像昵称了。
推荐关注:
文章评论