关于微信公众号调用微信分享

转自:https://blog.csdn.net/u012291108/article/details/51861012

自从微信6.0以后,,,WeixinJSBridge.on这个方法不能被轻易使用了,解决的办法有两个,

第一个是你们的公众号去微信申请,申请成功,这个方法依然可以使用,另一个方法就是用JS-SDK,方法如下

备注:在所有操作之前微信公众号各项功能保证开通:

http://jingyan.baidu.com/article/d3b74d64c517051f77e609ed.html

 

一,调用接口获取access_token

返回报文为json格式,例如:

第二步:获取jsapi-ticket

第三步:获取签名算法

签名算法代码如下:

 

class Sign {

    public static void main(String[] args) {

        String jsapi_ticket = "jsapi_ticket";

 

        // 注意 URL 一定要动态获取,不能 hardcode

        String url = "http://example.com";

        Map<String, String> ret = sign(jsapi_ticket, url);

        for (Map.Entry entry : ret.entrySet()) {

            System.out.println(entry.getKey() + ", " + entry.getValue());

        }

    };

 

    public static Map<String, String> sign(String jsapi_ticket, String url) {

        Map<String, String> ret = new HashMap<String, String>();

        String nonce_str = create_nonce_str();

        String timestamp = create_timestamp();

        String string1;

        String signature = "";

 

        //注意这里参数名必须全部小写,且必须有序

        string1 = "jsapi_ticket=" + jsapi_ticket +

                  "&noncestr=" + nonce_str +

                  "×tamp=" + timestamp +

                  "&url=" + url;

        System.out.println(string1);

 

        try

        {

            MessageDigest crypt = MessageDigest.getInstance("SHA-1");

            crypt.reset();

            crypt.update(string1.getBytes("UTF-8"));

            signature = byteToHex(crypt.digest());

        }

        catch (NoSuchAlgorithmException e)

        {

            e.printStackTrace();

        }

        catch (UnsupportedEncodingException e)

        {

            e.printStackTrace();

        }

 

        ret.put("url", url);

        ret.put("jsapi_ticket", jsapi_ticket);

        ret.put("nonceStr", nonce_str);

        ret.put("timestamp", timestamp);

        ret.put("signature", signature);

 

        return ret;

    }

 

    private static String byteToHex(final byte[] hash) {

        Formatter formatter = new Formatter();

        for (byte b : hash)

        {

            formatter.format("%02x", b);

        }

        String result = formatter.toString();

        formatter.close();

        return result;

    }

 

    private static String create_nonce_str() {

        return UUID.randomUUID().toString();

    }

 

    private static String create_timestamp() {

        return Long.toString(System.currentTimeMillis() / 1000);

    }

}


猜你喜欢

转载自blog.csdn.net/gf771115/article/details/79946802