微信モーメンツ共有インタフェースの使用概要
9488 ワード
微信のモーメンツ共有インタフェースは非常に詳細で、デバッグしにくいので、ここでまとめて、まず微信開発者のドキュメントの紹介に従うべきで、インタフェースデバッグツールで必要なインタフェースの権限を確定します(ここでインタフェースの権限を申請しなければなりません)?それからこのウェブサイトを携帯電話の微信で開いてインタフェースが利用できるかどうかをテストしますか?http://203.195.235.76/jssdk/
すべてのインタフェースが利用可能であることを保証する前提の下で、次は正式にテーマに入ります.私が使っているのはjavaのstrutsフレームワークのバックグラウンドです.
最も重要なのは署名です.3つのパラメータに連絡しているからです.
まずはjsapi_ticketの取得:
//ランダムは言わない
署名が正しい場合、デバッグ時にerrorMsg:okがポップアップされ、configが正しいことを示します.あとは簡単readyでインタフェースを呼び出す
まとめは細かいものばかりで、間違いやすいので、必ずドキュメントを見てください.間違いがたくさんあります.
すべてのインタフェースが利用可能であることを保証する前提の下で、次は正式にテーマに入ります.私が使っているのは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));
}
});
});
まとめは細かいものばかりで、間違いやすいので、必ずドキュメントを見てください.間違いがたくさんあります.