微信小程序获取openid异步问题 有时候获取不到问题

微信小程序获取openid异步问题 有时候获取不到问题,第1张

获取 openid 我是直接使用小程序云函数中的login函数,在开发中,我是直接写在主页面的js中,很多函数都需要openid的值,有时候能获取到,有时候又不行,调试之后发现是获取getopenid的函数是异步,不能通过 onLoad() 方法直接获取,当onload函数启动后,下面直接顺序执行,openid还没获取到,下面的函数已经在执行了,这就是异步问题了。

我们要在 APP.js 中调用获取 openid 云函数

1.用户点击微信授权,小程序端获取手机号

2.小程序端将手机号和code传给后台

3.后台通过code获取openid

如果openid已经存在,返回用户信息

如果openid不存在,并且该手机号未和openid绑定,那么该openid和手机号均可用户登录,返回用户信息

如果openid不存在,并且该手机号已经和某个openid绑定了,那么返回错误信息

补充:

前端传给后台code,后台通过小程序的一个方法(使用code,小程序appid和secret)从微信获取唯一标识openid(或unionid)

1.前端传给后台code,后台(使用code,小程序appid和secret获取)从微信获取唯一标识openid(或unionid)

2.如果后台存在该openid用户,返回登录成功的参数

如果不存在该openid用户,返给前端openid和一个失败的标识

3.前端界面跳转,变成输入手机号和验证码界面。

如果手机号存在,登录成功,返回参数。并且如果没有绑定微信,那么绑定openid

如果手机号不存在,那么注册该手机号为用户,并且绑定openid

或者第三步骤为:

3.前端将openid和手机号+密码给后台

如果登录成功,返回登录成功参数,并且如果没有绑定微信,那么绑定微信

如果用户(手机号)存在,密码错误,提示密码错误

如果用户(手机号)不存在,那么注册该密码为登录密码

官方说明为:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

获取步骤:

(1)获得appid,secret,js_code

(2)用appid,secret,js_code分别替换如上接口地址的APPID、SECRET、JSCODE,其他不变,组装成完整的地址。

微信小程序获得session_key和openId(加解密、签名系列)

微信小程序获得session_key和openId(加解密、签名系列)

总结:从1,2,3步骤可知,只要获得appid,secret,js_code就可得到session_key和openId

appid为小程序ID

secret为小程序密钥(AppSecret)

获得方法:小程序后台登录网址: https://mp.weixin.qq.com/

打开小程序后台网址、注册、登录后,按如下图所示就可找到你的AppID和AppSecret。

微信小程序获得session_key和openId(加解密、签名系列)

注意:目前小程序个人不能注册,开放注册范围:企业、政府、媒体、其他组织;

当然用这个办法,个人也能注册了。

传送门: http://www.moquu.com/v/372.html

微信小程序获得session_key和openId(加解密、签名系列)

(2)调用wx.login()接口获取登录凭证js_code

(3)调用wx.request()接口把js_code发送到服务器后台

(4)在服务器后台,已知appId、secret、js_code

然后调用如下官方提供的http接口,即可返回获取openId、session_key


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10967711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存