微信服务号之网页授权一套流程

本文介绍了微信服务号的网页授权过程,包括直接授权和静默授权两种方式。直接授权需用户同意,能获取用户的基本信息;静默授权则只获取openId。详细讲解了从获取微信登录链接,到通过code换取access_token,再到刷新access_token和拉取用户信息的整个流程。

前言

微信网页授权,分两种

1、第一种 直接授权,需要用户同意 snsapi_userinfo

我们经常看到的是如下的授权页面,那么这个时候,我们就可以获取用户的一些基本信息,,比如openId、用户头像。用户昵称、等等

2、第二种 静默授权,用户不同意也可以**snsapi_base**

这种方式我们只能获取到用户的openId

1、开始 1、获取微信登录链接

1、1、api访问地址

参数 是否必须 说明
appid 公众号的唯一标识
redirect_uri 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理
response_type 返回类型,请填写code
scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
#wechat_redirect 无论直接打开还是做页面302重定向时候,必须带此参数
    /**
     *第一步:用户同意授权,获取code
     */
    public static final String WEB_AUTHORIZE_URL ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";


1.2、获取登录地址

  @Override
    public String authorize(String redirectUrl ) {

        WeChatBusinessNo fuWuBusinessNoIdNo =  weChatBusinessNoRepository.findOne(Long.valueOf( TaobaoUtils.getParam("fuId",redirectUrl)));
        String url = WechatApiUrlParams.WEB_AUTHORIZE_URL;
        String requestUrl = null;
        try {
            requestUrl = url.replace("APPID", fuWuBusinessNoIdNo.getAppId())
                                    .replace("REDIRECT_URI", URLEncoder.encode(redirectUrl, "utf-8"))
                                    .replace("SCOPE", TaobaoUtils.getParam("scope",redirectUrl));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return requestUrl;

    }

2、第二步:通过code换取网页授权access_token

/**
     *第二步:通过code换取网页授权access_token
     首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。
     公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
             尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
     */
    @Override
    public String getAccessTokenByCode( String code,) {
      

     String url = WechatApiUrlParams.WEB_AUTHORIZE_GET_ACCESSTOKEN_BY_CODE_URL;
        String requestUrl = url.replace("APPID", weChatBusinessNo.getAppId())
                .replace("SECRET", weChatBusinessNo.getAppSecret())
                .replace("CODE", code);

        HttpBackBean httpBackBean = HttpHelper.handleGet(requestUrl, null,null , HttpHelper.OVERTIME );
        log.info(httpBackBean.getResult());

        if(httpBackBean.getResult().contains("errcode")){
            log.info("通过code换取网页授
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值