微信网页授权

简介

近来,尝试进行微信方面的开发,做一些简单的小应用,比如:使用SpringBoot + MySQL + Nginx + Redis开发微信点餐系统——类似于CoCo店面内,用微信扫码下单的功能!

 

0、何为网页授权

 

网页授权可以让开发者获取用户的基本信息,然后开发者根据这些信息来标记特定用户。当用户使用微信扫码下单系统时,微信提交用户信息到开发者的数据库中,开发者根据微信提交的用户信息进行特定的数据处理,而后返回给用户微信的操作界面。

网页授权中,开发者需要获取的最重要的用户信息为:Openid,这是一个用户的唯一标识,不会重复。

 

实际开发中可以使用微信公众号来开发点餐系统——主要是使用公众号的网页授权功能、认证服务、支付功能。
 

在开发之前,一定要完整的阅读微信开放文档,了解完整的开发过程,否则.......无法使用微信提供的API,出现错误代码时,会完全找不到头绪。因为JAVA和C语言不太一样。

  • C语言在Debug时,可以获取每一步所执行的代码;

  • JAVA在Debug时,有些代码是不会出现在Debug界面。特别是使用JAVA进行Web开发时,这点表现得尤为明显;

因此,对于开发者来说,必须学会先阅读技术文档,再着手开始项目。微信开发文档链接:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

 

1、网页授权步骤

由于这仅是个人开发的项目,在没有服务号的情况下,只能够使用测试号开发——订阅号无法获取用户信息,即:无法完成网页授权功能。

切记!!!切记!!!

当初在这里踩坑,耗时1d才走出这个坑。说难也不难,唯一需要注意的就是:需要使用网络工具,让本机获取一个公网IP,否则无法调试本地的工程。可参考我使用的工具:natapp

(其中,NatApp资费12元/月,这对于学生党来说应该可以接受)

这就来说说网页授权的具体步骤:

1、公众号部分:

1.1、使用微信公众账号测试号:

因为只有已经认证的服务号才拥有网页授权(获取用户信息)的权限,订阅号是没有该权限的。微信提供了测试账号,可以进行网页授权。

测试号申请链接:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

 

1.2、配置测试账号:

1.2.1、接口配置信息:

配置完后,先别提交,因为SpringBoot工程中还没有进行Token验证,微信公众号需要通过“提交”按钮验证所填写外网服务器的正确性

(1)URL:外网的IP + 测试Token的URL

eg:http://xxx.natapp1.cc/sell/wechat/wx.do

(2)Token:可以随意填写,只要保证在SpringBoot工程中,测试代码使用的Token为此处填写的数值即可。

eg:chris

 

1.2.2、JS接口安全域名:

只填写外网服务器的域名即可,不需要填写http://、Https://

eg:xxx.natapp1.cc

 

1.2.3、测试号二维码:

直接使用微信扫描测试号的二维码,关注该测试号,用于查看自己微信的Openid。用于验证SpringBoot工程所获取的Openid是否正确。

 

1.2.4、网页服务->网页账号:

网页授权获取用户的基本信息。填写外网服务器的域名,不需要填写http://、Https://

作用:

(1)当用户通过外网服务器访问微信公众号的web应用时,用户先访问到web应用。

(2)再由web应用到微信公众号进行授权,获取用户的Openid。

(3)其次,微信公众号需要有一个回调页面,把获取到的Openid等数据传回该回调页面,而这里填写的外网服务器域名就是该回调页面所在的服务器。

(4)最后,需要手工将用户请求中的redirect_uri参数和获取到的Openid拼接,然后微信公众平台会将页面跳转到指定的redirect_uri页面。
 

eg:跳转之后的页面URL:redirect_uri + Openid

http://sell.com/#/?openid=olGbLwMfCOJHBB-NYAfBMn6UqXXc

 

2、本机的SpringBoot工程:

2.1、进行Token验证:

(1)将附录一中的代码添加到SpringBoot工程中;

(2)直接运行SpringBoot工程;

(3)在微信公众号的接口信息配置界面(填写Token的地方),点击提交按钮,就可以通过验证。此时公众号配置已经完成。

 

2.2、获取Openid:

2.2.1、 配置Nginx:

位置:nginx/conf/nginx.conf

修改内容:修改server中的

(1)server_name: 之后微信公众号要跳转的域名。

(2)location/sell/:本地代码调试时,使用的链接。

proxy_pass http://SpringBoot工程所在机器的IP:端口/web应用的context_path

 

2.2.2、配置前端项目:

(1)修改前端源码的配置文件:

        修改build下的Url的sellUrl、OpenidUrl。

(2)重新编译:

        返回/opt/code/sell_fe_buyer/,使用npm run build编译

(3)将编译后的文件复制到原来的Nginx前端的根目录下:

        命令:cp -rdist/*

(Nginx不需要重启)

 

2.2.3、 SpringBoot工程添加获取Openid的代码:

附录二的代码直接加入SpringBoot工程中即可。然后运行SpringBoot工程。

 

2.2.4、用户访问链接

作用:测试是否能够实现页面跳转,并获取到Openid。

路径(URL):外网服务器域名 + web应用中获取Openid的controller路径 +returnUrl。

可以将百度替换成自己的外网服务器中的web应用地址,就可以实现从微信客户端访问web应用。

eg:微信客户端访问链接,跳转到百度

(1)外网服务器域名:

http://xxx.natapp1.cc

(2)web应用中获取Openid的controller路径:

/自己的url路径

(3)returnUrl:

需要跳转到的路径

(4)拼接结果:

最终,用户在微信上点击的链接:http://公网IP/自己的url路径?returnUrl=跳转路径

(5)用户最终的访问页面为:百度

(6)该页面的URL:

跳转路径/?openid=用户的OpenID

 

 

附录:

附录一,提取码:oeea

附录二,提取码:a38s

 


 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值