小程序扫码登录网页应用

2023-03-12 19:58 小程序 642 0
一、整体实现思路前端调用接口生成带唯一scene参数的小程序码,并定时器获取该参数登录状态用户扫描小程序码跳转到小程序界面,同时后台将用户openid与唯一scene参数关联小程序界面弹出登录确认按钮,用户确认登录,查询数据库是否存在该openid用户,有则直接将唯一scene参数设置为可登录状态,前端获取状态后直接进行登录。如果没有改用户,则直接新建一个用户,同时让用户完善个人信息,然后再将唯一scene参数设置为可登录状态,前端获取状态后直接进行登录二、核心步骤代码1.生成带唯一scene参数的小程序码由于生成小程序码为微信服务端接口,因此该接口需要后台实现1)获取微信AccessToken前往微信小程序开放平台,选择开发管理,进入开发设置,复制AppID以及AppSecret调用获取接口调用凭据接口getAccessTokenfuncGetWechatAccessToken()(errHaserror){appid:=conf.GetConf("appid")secret:=conf.GetConf("secret")url:=fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",appid,secret)resp,err:=restgo.NewHttpBuilder().Send(restgo.GET,url)iferr!=nil{returnerrors.New("获取AccessToken失败")}returnnil}2)生成带参数的小程序码调用获取不限制的小程序码接口getUnlimitedQRCode后台生成唯一scene,同时将生成的小程序码数据一起返回前端记录funcGetWechatCode(GUIDstring)(data[]byte,errerror){resp,err:=restgo.NewHttpBuilder().Payload(map[string]interface{}{"scene":GUID,"page":"pages/center/index",}).Send(restgo.POST,"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+access_token)iferr!=nil{returnnil,errors.New("小程序码生成失败")}varresmap[string]stringresp.BodyUnmarshal(&res)ifres["errmsg"]!=""{returnnil,errors.New("小程序码生成失败")}returnresp.Body(),nil}该接口返回的是小程序码的base64,前端显示需要拼接data:image/png;base64,小程序获取唯一scenefunctiononLoad(query){//scene需要使用decodeURIComponent才能获取到生成二维码时传入的sceneconstscene=decodeURIComponent(query.scene)}2.将openid与scene进行绑定扫码之后小程序使用wx.login接口获得临时登录凭证code后传到开发者服务器调用登录接口code2Session获取openidfuncGetWechatcode2Session(js_codestring)(datamap[string]string,errerror){appid:=conf.GetConf("appid")secret:=conf.GetConf("secret")url:=fmt.Sprintf("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code",appid,secret,js_code)resp,err:=restgo.NewHttpBuilder().Send(restgo.GET,url)iferr!=nil{returnnil,errors.New("获取用户信息失败")}res:=map[string]string{}resp.BodyUnmarshal(&res)returnres,nil}然后将openid与scene进行绑定3.小程序弹出登录弹窗点击弹窗的登录按钮,查询用户信息,后台将scene对应的状态改为登录成功前端轮询到scene状态改变,状态是扫码确认成功,进行登录三、功能演示本站已经支持小程序扫码登录,可以前往体验
暂无评论,我会出手
说点什么
登录用户可以修改和删除评论,可以收到回复的邮件提醒点击登录/注册
最多上传8张图片,仅支持jpg,png格式图片,单张大小5MB以内!
用户名: