微信公众号开发1-微信授权登录

说在前面的话

关于微信公众号的项目也已经告落一段时间了,但是项目结束后又有参加了新的项目,导致一直没有时间分享项目经验,今天正好得空来分享一下本项目,本项目主要用到了微信公众号开发,百度地图api等,具体技术如下

  1. 微信授权登录
  2. 微信获取用户定位
  3. 百度地图批量计算两点直接距离(驾车距离)
  4. 模板消息推送
  5. 微信支付
  6. 微信退款
  7. 微信内嵌地图
  8. 经纬度转换及逆转换

微信授权登录

1、微信授权登录的有点和缺点

没有接触过微信授权登录的小伙伴可能会问什么是微信授权登录,其实微信授权登录就是不需要用户输入用户名密码,直接就可以登录该平台,从而获取到唯一标识符来获取个人信息。

  1. 优点:不需要用户再输入用户名以及密码 直接就可以登录
  2. 缺点:必须在微信里使用才可以
2、准备微信授权登录(*)

左侧开发——>基本配置中查询微信AppID,AppSecret。
在这里插入图片描述
微信授权登录时必须要用自己的微信AppID,AppSecret。
白名单也需要进行配置。
在这里插入图片描述
还有设置——公众号设置中配置业务域名,js接口安全域名,网页授权域名。

在这里插入图片描述

  1. 业务域名:这个其实不是太重要,不配置它也可以正常运行项目,但是会在网页上端提示红色框框,表示这个网址可能存在防欺诈盗号。
    在这里插入图片描述
  2. js接口安全域名
    这个借口就比较重要了,因为如果你不配置这个域名的话,当你网页中需要获取用户定位等JS的组件时,就会出现错误信息。
    在这里插入图片描述
  3. 网页授权域名
    最重要的一部分,如果没有设置该域名的话,在用户登录时会报错显示非法请求或者是域名未获得权限等
    在这里插入图片描述
    注意,在配置之前需要将它的文件下载到自己的服务器上,需要让微信能访问到您的项目,比如你的项目是http://www.xiaofeng88.cn/wxtest,将文件放在该项目的根目录那么你必须在域名里直接写该域名+项目名,也就是填写http://www.xiaofeng88.cn/wxtest。这样就可以配置成功了。

如果您是新手,并没有微信公众号,这里微信也提供登录测试号,在测试号里可以登录申请,测试号不需要配置白名单,比正式号简单一些。具体不再论述。
在这里插入图片描述

开发

开发四步走策略

  1. 第一步:用户同意授权,获取code
    第一步需要用户点击同意我们才可以进行下一步操作,因此我们刚开始的链接需要引导用户去点击授权登录,在请求时您会给微信发送请求,请求中有一个参数是redirect_uri,然后微信会把这个code发送到这个地址上,所以这个地址我这边建议是后端的地址,接受到微信的请求后可以获取code参数。
    参数如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect 

参数介绍:
appid=APPID :就是微信的唯一AppId
redirect_uri=REDIRECT_URI :你自定义的微信发送给你的code地址。你需要用这个uri服务去接收微信发来的code。(这个地址需要你用encode转义)
response_type=code:不变化
scope=SCOPE :snsapi_base 静默方式登录 snsapi_userinfo用户详细信息,需要用户点击授权
state=STATE:DEFAULT
所以如果你想静默登录的话就

https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid填写处&redirect_uri=你获取code的地址&response_type=code&scope=snsapi_base&state=DEFAULT#wechat_redirect 
  1. 第二步:通过code换取网页授权access_token

获取code后,请求以下链接获取access_token:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

获取的代码如下:

  if (StringUtils.isEmpty(code)) {
            throw new IllegalArgumentException("code can't be null or empty");
        }
        //拼接参数
        String param = "?appid=" + weixin.getAppId() + "&secret=" + weixin.getSecret() + "&code=" + code + "&grant_type=authorization_code";
        //创建请求对象
        HttpsClient http = new HttpsClient();
        //调用获取access_token接口
        Response res = http.get("https://api.weixin.qq.com/sns/oauth2/access_token" + param);
        //根据请求结果判定,是否验证成功
        JSONObject jsonObj = res.asJSONObject();
        if (jsonObj == null) {
            return null;
        }
        if (Configuration.isDebug()) {
            System.out.println("getSnsOAuth2AccessToken返回json:" + jsonObj.toString());
        }
        Object errcode = jsonObj.get("errcode");
        if (errcode != null) {
            //返回异常信息
            throw new WeixinException(getCause(jsonObj.getIntValue("errcode")));
        }
        return new SnsAccessToken(jsonObj);

这里我说一下 我使用了是weixin4J的sdk,下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值