前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 实现微信自动登录

Java 实现微信自动登录

作者头像
echobingo
发布2018-04-25 17:18:09
3.4K0
发布2018-04-25 17:18:09
举报

需求: 用户通过微信进行登录,如果是第一次登录,则进入绑定界面,需要用户输入用户名和密码保存到数据库;如果不是第一次登录,则直接跳过绑定界面,实现微信自动登录。

思路: 每个微信用户请求某个微信服务号都会产生一个 code 值,通过该 code 值能够解析出用户唯一的 openid 值。将第一次登录的用户的 code 值和 openid 值保存到数据库中,以后如果再次请求该服务号,则先去判断 code 和 openid 是否在数据库中,如果在,就能够实现微信的自动登录。

注意: 微信的 code 值每 5 分钟就会失效,但一个微信用户的 openid 是不变的。如果 code 值不在数据库中,但 openid 在,也说明该用户之前已经登录过,这个时候要更新数据库中的 code,同时自动登录。

具体流程如下图:

那么问题来了:如何获取 code 值?

在测试的时候,如何构造一个 code 参数呢?首先我们可以注册一个微信公众号,然后在左侧【开发中工具】中找到【公众平台测试账号】的选项,能得到 appID 和 appsecret 两个值,这两个值可以帮助我们从 code 中解析出该用户的 openid。往下滑动,我们还需要关注测试号二维码,可以看到我们的 openid 值(下图中打马赛克的那个),该 openid 值就是通过 code 值能够解析出的该用户的 openid 值。

再往下滑,找到 【网页服务】-> 【网页账号】,点击修改,里面填入我们的回调域名(如果是测试工具,填 ip 地址也行),但是不能加上 http:// 或者 https://(回调域名随便设置一个可以访问到的网址)。

之后我们可以用接下来的网址产生一个 code 参数: https://open.weixin.qq.com/connect/oauth2/authorize?appid=appID&redirect_uri=URI&response_type=code&scope=snsapi_base&state=123#wechat_redirect

注意点:其中,将 appID 换成你的测试号的 appID,URI 换成你的回调域名,而且一定要加上 http:// 或者 https:// ,这个链接要在微信客户端打开,然后再在浏览器中打开,在浏览器的 URL 地址栏中就可以找到 code 参数值,如下返回的链接: http://URI/?code=061nPiaw13KHu90vlw7w1WO4aw1nPiax&state=123,其中 URI 是你的回调域名,061nPiaw13KHu90vlw7w1WO4aw1nPiax 就是生成的 code 参数。

在测试的时候,一个 code 只能使用一次,下次还用产生 code 参数的链接生成新 code 参数即可。

后记:如果项目最后要上线的话,记得把该测试号用到的所有参数更新为服务号对应的参数(如appID、appsecret、回调域名等等)。

由于是公司项目,Java 实现的代码就不贴出了。网上有类似的,改一改就可以用。


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.03.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档