专栏首页hotqin888的专栏beego微信小程序登录、确权、解密

beego微信小程序登录、确权、解密

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/82532964

官方都是讲小程序如何把信息发给开发者服务器,开发者服务取得openid……

问:微信小程序访问自己服务器接口获得数据,有个问题,自己服务器的接口访问必须是用户登录过得(也就是进行授权过得),那么当微信小程序从微信那里授权以后,访问自己服务器,怎么取设计,登录自己服务器的这件事情。可能说的不够清楚。 自己的想法:微信小程序自己授权后,肯定能获取类似openid这种东西,把openid给自己服务器,但是自己服务器肯定要验证openid的合法性,不知道怎么验证。 或者这样,微信小程序做个登录功能,但是应该没有必要吧。 问一下,一般怎么做比较好,给点思路啥的。

回答:

  1. 先调用wx.login()获取code,把code传到服务端,服务端根据code调用微信接口换取openid,可以把openid跟你的账户关联起来。如果数据库中没有这个openid那就算注册,返回小程序需要注册。如果有,那就返回小程序注册过,返回一个token之类的来作为登录状态。
  2. 小程序收到服务端返回的token缓存起来,下次进入小程序的时候就不用再调用wx.login(),而是直接调用业务接口就可以了

https://blog.csdn.net/qq_33594380/article/details/80431582

https://blog.csdn.net/u012369373/article/details/78696228

3、服务器A拿到session_key后,生成一个随机数我们叫3rd_session,以3rdSessionId为key,以session_key + openid为value缓存到redis或memcached中;因为微信团队不建议直接将session_key在网络上传输,由开发者自行生成唯一键与session_key关联。其作用是: (1)、将3rdSessionId返回给客户端,维护小程序登录态。

(2)、通过3rdSessionId找到用户session_key和openid。

4、客户端拿到3rdSessionId后缓存到storage,

5、通过wx.getUserIinfo可以获取到用户敏感数据encryptedData 。

6、客户端将encryptedData、3rdSessionId和偏移量一起发送到服务器A

7、服务器A根据3rdSessionId从缓存中获取session_key

8、在服务器A使用AES解密encryptedData,从而实现用户敏感数据解密。

问:微信开放平台的微信登录功能,可以获取到用户的基本信息,比如昵称、姓名等等。但是怎样能获取微信号呢。 微信登录功能已经做完了,但是在后台查询该用户总不能使用昵称查询,而且昵称也会变化。有么有好的解决方案。

回答:昵称会变化的,用用户的openid就可以了。不能获得微信号

现在的微信登录第三方网页要么是登录后让其完善信息,录入手机号或用户名做为登录依据,要么就是分配一个用户名让用户每次只能使用微信登录。 至于昵称会改变的问题,你可以在每次获取到用户openid的时候去拉他的详细信息更新一下他的信息。

只能获取以下信息 openid 用户的唯一标识 nickname 用户昵称 sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 province 用户个人资料填写的省份 city 普通用户个人资料填写的城市 country 国家,如中国为CN headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 privilege 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

golang获取微信小程序openid和sessionkey

https://github.com/shen100/wemall

只有需要获取(wx.getUserIinfo可以获取到用户敏感数据encryptedData )的时候才需要解密,golang解密见:

https://github.com/xlstudio/wxbizdatacrypt

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • fullcalendar搜索事件并定位以及跳转到指定年月

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • uparse展示视频时与bootstrap导航条冲突?

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • engineercms小程序注册方式

    那么小程序端,如何匹配这个用户呢,需要有个登录(感觉又像注册,往下看),用网页版的用户名和密码——服务端收到后进行验证,如果密码对上了,则服务端记录这个用户的小...

    hotqin888
  • 有趣的算法(十) ——归并排序思想解决大量用户数据清洗

    有趣的算法(十)——归并排序思想解决用户数据清洗 (原创内容,转载请注明来源,谢谢) 一、问题阐述 近期工作中接触到一个很有趣的算法,在此进行分享。 当前有...

    用户1327360
  • 比AlphaGo Zero更强的AlphaZero来了!8小时解决一切棋类!

    原标题:比AlphaGo Zero更强的AlphaZero来了!8小时解决一切棋类! ? 来源:本文作者PENG Bo(http://t.cn/RY3MKSS)...

    企鹅号小编
  • 我是如何找到 Google Colaboratory 中的一个 xss 漏洞的

    在本文中,我来讲讲我碰到的一个有趣的 XSS。2018 年 2 月,我在 google 的一个网络应用中发现了这个 XSS。这篇文章我不希望只是直接写出这个 X...

    信安之路
  • 管理Salesforce用户的最佳实践

    管理Salesforce用户看起来不困难,但是今天我们还是会介绍下管理Salesforce用户的最佳实践。使用不正确的方法管理用户和许可证可能导致企业数据完整性...

    臭豆腐
  • 比AlphaGo Zero更强的AlphaZero来了!8小时解决一切棋类!| 快讯

    读过AlphaGo Zero论文的同学,可能都惊讶于它的方法的简单。另一方面,深度神经网络,是否能适用于国际象棋这样的与围棋存在诸多差异的棋类?MCTS(蒙特卡...

    AI研习社
  • Vapor奇幻之旅(06 PostgreSQL)

    用Vapor连接数据库是一件令人兴奋的事,本篇就来介绍如何使用Vapor来连接PostgreSQL数据库,将数据持久化。

    Leacode
  • 比AlphaGo Zero更强的AlphaZero来了!8小时解决一切棋类! PENG Bo

    Photo by Jason Kempin/Getty Images for Agon Limited 作者 | 禀临科技联合创始人 PENG Bo 读过Alp...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券