zoukankan      html  css  js  c++  java
  • (7)微信二次开发 之 微信接口凭证的获取

    1、微信接口凭证的理解

    对于每一个公众号(订阅号、服务号、企业号)都是微信平台上的一个app。

    对于每一个公众号都有一套appid和appsect,这是微信平台用来区分微信app的唯一方法。
    如图:(在微信公众号的基本配置中,appsect想看到需要扫描和输入密码一起通过才可看到)

     

      

    2、微信接口凭证access_token的理解

      AppID(应用ID),AppSecret(应用密钥),还有access_token(访问令牌)。access_token访问令牌是由appid和appsect经过一定的算法得来。

      access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

      为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务。

    目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡。

    access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。

      如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。

      公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

    3httphttps协议以及端口的理解

    Http(HyperText Transfer Protocol)是超文本传输协议,所有的www文件都必须遵守这个标准。HTTP1.0 --> HTTP1.1

    HTTP是基于TCP,是基于客户端和服务器端请求和应答(响应)的标准。客户端即为用户,服务器端即网站服务器,客户端向服务器端在80端口发起HTTP请求。一旦服务器有响应,即响应数据回来;没有响应,就返回状态码。

     

    端口:就是针对一块内存的编号。

     

    httpsHyperText Transfer Protocol Over Secure Socket Layer,基于安全套接字的HTTP协议, 是HTTP协议的安全版。在HTTP下加入了SSL层,所以HTTPS的安全基础是基于SSL。最早由网景公司开发,主要是用于金融、支付、对安全要求比较高的领域。

    HTTPS使用的端口是:443

    4httphttps协议的区别

    HTTP协议用于在web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密。HTTPS协议需要用到CA申请证书,证书是需要交费的。http是明文传输,https是加密传输,http协议使用的是80端口,https协议使用的443端口,

      HTTP的连接简单无状态,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输的、身份认证的网络协议。

     

      在微信接口里,所有的接口都将采用 https 协议。

     

    5微信二次开发Java实现发送https请求获取信息

    package com.aixunma.test;
    
    import java.util.List;
    
    import org.junit.Test;
    
    import com.aixunma.config.Contants;
    import com.aixunma.vo.AccessToken;
    import com.aixunma.wechat.util.BaseIncUtil;
    import com.aixunma.wechat.util.WeixinUtil;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    /**
     *  测试accessToken请求返回的数据
     * <p>类的描述:</p>
     * <p>@Description: TODO</p>
     * <p>@author 小海</p>
     * <p>@time:2017年5月1日 下午10:09:50</p>
     * <p>@Vesion: 1.0</p>
     */
    public class TestAccessToken {
        
        @Test
        public void test() {
            final AccessToken accessToken = WeixinUtil.getAccessToken(Contants.APPID, Contants.APPSECRET);
            // 输出数据
            System.out.println("access_token(访问令牌):" + accessToken.getAccess_token());
            System.out.println("expires_in(有效时间):" + accessToken.getExpires_in());
            
            // 获取微信服务器列表
            final String ipAddressList = BaseIncUtil.getServerList(accessToken.getAccess_token());
            System.out.println(ipAddressList);
            
            // 这里的ipAddressList是一个json格式的字符串
            
            // 解析json格式
            final JSONObject jsonObject = JSONObject.fromObject(ipAddressList);
            final List<String> list = JSONArray.toList(jsonObject.getJSONArray("ip_list"));
            if (null != list) {
                for (int i = 0; i < list.size(); i++) {
                    System.out.println("第" + i + "个ip:" + list.get(i));
                }
            }
        }    
    }

    ipAddressList的json数据如下:目前微信服务器使用到了98个。
     {"ip_list":["101.226.62.77","101.226.62.78","101.226.62.79","101.226.62.80","101.226.62.81",
     "101.226.62.82","101.226.62.83","101.226.62.84","101.226.62.85","101.226.62.86",
     "101.226.103.59","101.226.103.60","101.226.103.61","101.226.103.62","101.226.103.63",
     "101.226.103.69","101.226.103.70","101.226.103.71","101.226.103.72","101.226.103.73",
     "140.207.54.73","140.207.54.74","140.207.54.75","140.207.54.76","140.207.54.77",
     "140.207.54.78","140.207.54.79","140.207.54.80","182.254.11.203","182.254.11.202",
     "182.254.11.201","182.254.11.200","182.254.11.199","182.254.11.198","59.37.97.100",
     "59.37.97.101","59.37.97.102","59.37.97.103","59.37.97.104","59.37.97.105",
     "59.37.97.106","59.37.97.107","59.37.97.108","59.37.97.109","59.37.97.110",
     "59.37.97.111","59.37.97.112","59.37.97.113","59.37.97.114","59.37.97.115",
     "59.37.97.116","59.37.97.117","59.37.97.118","112.90.78.158","112.90.78.159",
     "112.90.78.160","112.90.78.161","112.90.78.162","112.90.78.163","112.90.78.164",
     "112.90.78.165","112.90.78.166","112.90.78.167","140.207.54.19","140.207.54.76",
     "140.207.54.77","140.207.54.78","140.207.54.79","140.207.54.80","180.163.15.149",
     "180.163.15.151","180.163.15.152","180.163.15.153","180.163.15.154","180.163.15.155",
     "180.163.15.156","180.163.15.157","180.163.15.158","180.163.15.159","180.163.15.160",
     "180.163.15.161","180.163.15.162","180.163.15.163","180.163.15.164","180.163.15.165",
     "180.163.15.166","180.163.15.167","180.163.15.168","180.163.15.169","180.163.15.170",
     "101.226.103.0/25","101.226.233.128/25","58.247.206.128/25","182.254.86.128/25","103.7.30.21",
     "103.7.30.64/26","58.251.80.32/27","183.3.234.32/27","121.51.130.64/27"]}

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/c-xiaohai/p/6849684.html
Copyright © 2011-2022 走看看