需求:
- 没有服务器开发,如何实现微信小程序端的登录功能?
- 旧项目转云开发并使用云函数?
以上是我目前项目的背景。
小程序端的登录流程,官网介绍的很清楚了
主要就是通过 wx.login
去获取code
,然后拿code
去服务器端获取openid
ps: 用户公开的微信信息,可以通过
Button
的open-type = getUserInfo
去获取,Button 组件
看完以上几个文档,至此登录流程已经很清晰了,下面就是具体操作了。
新项目直接使用云开发模板即可。
老项目开通云开发也很简单,点击开发者工具中菜单上的【云开发】一步步操作即可。
由于我们没有服务器,要获取小程序中用户的唯一标识openid
,需要新建一个云函数,将Openid
等参数返回。
没有使用云开发模板的项目, 可参考 我的第一个云函数 中的使用方法来实现云函数获取openid
。
看不明白官方文档的
结合我的做法再看一遍文档吧:
-
在
project.config.json
添加"cloudfunctionRoot": "./functions/"
-
新建云函数
-
部署云函数,之后点击【云开发】之后可查看到刚刚新建的函数
-
然后编写获取
openid
的云函数
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
- 最后调用一下云函数,获取
openid
// 获取用户openid
getOpenid() {
let that = this;
wx.cloud.callFunction({
name: 'getOpenid',
complete: res => {
console.log('openid: ', res.result.openid)
console.log('appid: ', res.result.appid)
// var openid = res.result.openId;
// that.setData({
// openid: openid
// })
}
})
},