微信モーメンツ共有インタフェースの使用概要

9488 ワード

微信のモーメンツ共有インタフェースは非常に詳細で、デバッグしにくいので、ここでまとめて、まず微信開発者のドキュメントの紹介に従うべきで、インタフェースデバッグツールで必要なインタフェースの権限を確定します(ここでインタフェースの権限を申請しなければなりません)?それからこのウェブサイトを携帯電話の微信で開いてインタフェースが利用できるかどうかをテストしますか?http://203.195.235.76/jssdk/
すべてのインタフェースが利用可能であることを保証する前提の下で、次は正式にテーマに入ります.私が使っているのはjavaのstrutsフレームワークのバックグラウンドです.
var timestamp = '<s:property value="timestamp" />';
var signature = '<s:property value="signature" />';
var inviteAddr = '<s:property value="inviteAddr"/>';
//       config
 wx.config({
        debug: true, //       ,     api         alert  ,         ,   pc   ,       log  ,  pc      。
        appId: "     ", //   ,        
        timestamp: timestamp, //   ,             
        nonceStr: 'TmqtI9LIZM4uGiY6MWYBN4GnthPx1QKUEERYoqR7Rt6', //   ,        ,     
        signature: signature,//   ,  ,   1
        jsApiList: [ 'checkJsApi',
                     'openLocation',
                     'getLocation',
                     'onMenuShareTimeline',
                     'onMenuShareAppMessage'] //   ,     JS    ,  JS       2
    });

最も重要なのは署名です.3つのパラメータに連絡しているからです.
signature = Common.setSignature(jsapi_ticket, Common.noncestr, timestamp, "http://" + url);

まずはjsapi_ticketの取得:
public static String getAccessToken(HttpServletRequest request) {       
String turl = String.format(
                "%s?grant_type=client_credential&appid=%s&secret=%s",
                Common.appUrl, Common.appID, Common.appSecret);
        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(turl);
        JsonParser jsonparer = new JsonParser();
        String result = null;
        try {
            HttpResponse res = client.execute(get);
            String responseContent = null;
            HttpEntity entity = res.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
            JsonObject json = jsonparer.parse(responseContent)
                    .getAsJsonObject();
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                if (json.get("errcode") != null) {
                } else {
                    result = json.get("access_token").getAsString();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            client.getConnectionManager().shutdown();
// if(null != request){
// Common.setSession(request, "access_token", result);
// }
            return result;
        }
    }

public static String getJsapiTicket(HttpServletRequest request) {
// String access_token = Common.getAccessToken(request);
        //  AccessToken
        String access_token = getAccessToken(request);
        String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="
                + access_token + "&type=jsapi";

        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(url);
        JsonParser jsonparer = new JsonParser();
        String result = null;
        try {
            HttpResponse res = client.execute(get);
            String responseContent = null;
            HttpEntity entity = res.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
            JsonObject json = jsonparer.parse(responseContent)
                    .getAsJsonObject();
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                if (!json.get("errcode").toString().equals("0")) {
                    // {"errcode":40013,"errmsg":"invalid appid"}
                } else {
                    result = json.get("ticket").getAsString();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            client.getConnectionManager().shutdown();
            return result;
        }
    }
//     
timestamp = String.valueOf((new Date()).getTime() / 1000);

//ランダムは言わない
//url  
    String url = request.getHeader("Host") + request.getRequestURI();//      

署名が正しい場合、デバッグ時にerrorMsg:okがポップアップされ、configが正しいことを示します.あとは簡単readyでインタフェースを呼び出す
wx.ready(function(){
         // config        ready  ,          config        ,config           ,                   ,         ready            。             ,       ,     ready   。
        //       
        wx.onMenuShareTimeline({
            title: '', //     
            link: "      ", //     
            desc: "",
            imgUrl: "   url",
            trigger: function (res) {
                //      trigger   ajax             ,                ,     ajax         
                // alert('         ');
              },
              success: function (res) {
                alert('   ');
                window.location.href= "red_package_index?shareFlag=1";
              },
              cancel: function (res) {
                 alert('   ');
              },
              fail: function (res) {
                 alert(JSON.stringify(res));
              }
            });
            });

まとめは細かいものばかりで、間違いやすいので、必ずドキュメントを見てください.間違いがたくさんあります.