微信分享-微信认证授权详细代码示例

微信认证授权详细代码示例

背景

公司有个H5页面分享到微信之后不显示图片,且样式跟其他应用的分享卡片存在差异.后来发现是因为没有调用微信统一的分享接口.下面就是我踩坑踩出来的心得.

开发前必须知道的东西

  • 要有一个公众号,有了公众号就会有appId和appsecret.
  • 要有一个外网可以访问的域名,测试的话,可以用内网穿透工具,比如natapp.
  • 微信公众号接口必须以http://或https://开头,分别支持80端口和443端口
  • 可以阅读微信的JS-SDK的说明文档

操作步骤

1 HttpUtil工具类的编写

这个工具类的作用就是获取签名,可分为四步:

  1. 根据appId和appsecret获取access_token;
  2. 使用access_token获取jsapi_ticket;
  3. 使用时间戳,随机数,jsapi_ticket和要访问的url按照签名算法拼接字符串;
  4. 对第三步的字符串进行SHA1加密,得到签名;

注意: check_signature方法中的clearLove是我的token,记得换成你们自己的

public class HttpUtil {

    /**
     * 获得ACCESS_TOKEN
     * @param appId
     * @param appSecret
     * @return
     */
    public static String getAccess_token(String appId, String appSecret){

        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String accessToken = null;
        try
        {
            URL urlGet = new URL(url);
            HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
            http.setRequestMethod("GET"); // 必须是get方式请求
            http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            http.setDoOutput(true);
            http.setDoInput(true);
            System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
            System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
            http.connect();
            InputStream is = http.getInputStream();
            int size = is.available();
            byte[] jsonBytes = new byte[size];
            is.read(jsonBytes);
            String message = new String(jsonBytes, "UTF-8");
            JSONObject jsonObj = JSONObject.parseObject(message);
            accessToken = jsonObj.getString("access_token");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return accessToken;
    }

    /**
     * 获得ACCESS_TICKET
     *
     * @Title: ACCESS_TICKET
     * @Description: 获得ACCESS_TICKET
     * @param @return 设定文件
     * @return String 返回类型
     * @throws
     */
    public static String getAccess_ticket(String access_token) {
        String ticket = null;
        String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ access_token +"&type=jsapi";//这个url链接和参数不能变
        try {
            URL urlGet = new URL(url);
            HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
        
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值