微信JS-SDK說明文件---自己總結了config時的引數獲取方式
阿新 • • 發佈:2019-01-21
http://203.195.235.76/jssdk/
1、引入js
http://res.wx.qq.com/open/js/jweixin-1.0.0.js
或
https://res.wx.qq.com/open/js/jweixin-1.0.0.js
2、初始化
wx.config({
debug: true, // 開啟除錯模式,呼叫的所有api的返回值會在客戶端alert出來,若要檢視傳入的引數,可以在pc端開啟,引數資訊會通過log打出,僅在pc端時才會列印。
appId: '', // 必填,公眾號的唯一標識
timestamp: , // 必填,生成簽名的時間戳 見2.4
nonceStr: '', // 必填,生成簽名的隨機串 見2.4
signature: '',// 必填,簽名,見 2.3
jsApiList: [] // 必填,需要使用的JS介面列表,所有JS介面列表見 2.5
});
2.1、獲取 access token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
APPSECRET獲取方式 ,登入公眾號,基本配置
AppID(應用ID) wxd44e9d16ce2bdb2d
AppSecret 需要輸入正確的密碼才可以看見
返回{"access_token":"ACCESS_TOKEN","expires_in":7200}
2.2、獲取jsapi_ticket
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
返回
{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
}
2.3、簽名演算法
2.3.1 noncestr字串常量
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
&
noncestr=Wm3WZYTPz0wzccnW
&
timestamp=1414587457
&
url=http://mp.weixin.qq.com?params=value (簽名用的url必須是呼叫JS介面頁面的完整URL)
2.3.2、對上面資料進行shal1加密得到signature:
0f9de62fce790f9a083d5c99e95740ceb90c27ed
2.4、加簽演算法類
import java.util.UUID;
import java.util.Map;
import java.util.HashMap;
import java.util.Formatter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.io.UnsupportedEncodingException;
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);
}
}
2.5、jsApiList的值
onMenuShareTimeline
onMenuShareAppMessage
onMenuShareQQ
onMenuShareWeibo
onMenuShareQZone
startRecord
stopRecord
onVoiceRecordEnd
playVoice
pauseVoice
stopVoice
onVoicePlayEnd
uploadVoice
downloadVoice
chooseImage
previewImage
uploadImage
downloadImage
translateVoice
getNetworkType
openLocation
getLocation
hideOptionMenu
showOptionMenu
hideMenuItems
showMenuItems
hideAllNonBaseMenuItem
showAllNonBaseMenuItem
closeWindow
scanQRCode
chooseWXPay
openProductSpecificView
addCard
chooseCard
openCard
基本類
舉報: "menuItem:exposeArticle"
調整字型: "menuItem:setFont"
日間模式: "menuItem:dayMode"
夜間模式: "menuItem:nightMode"
重新整理: "menuItem:refresh"
檢視公眾號(已新增): "menuItem:profile"
檢視公眾號(未新增): "menuItem:addContact"
傳播類
這塊知識把時間繫結到了分享按鈕,目前沒有辦法直接去操作按鈕。
傳送給朋友: "menuItem:share:appMessage"
分享到朋友圈: "menuItem:share:timeline"
分享到QQ: "menuItem:share:qq"
分享到Weibo: "menuItem:share:weiboApp"
收藏: "menuItem:favorite"
分享到FB: "menuItem:share:facebook"
分享到 QQ 空間/menuItem:share:QZone
保護類
編輯標籤: "menuItem:editTag"
刪除: "menuItem:delete"
複製連結: "menuItem:copyUrl"
原網頁: "menuItem:originPage"
閱讀模式: "menuItem:readMode"
在QQ瀏覽器中開啟: "menuItem:openWithQQBrowser"
在Safari中開啟: "menuItem:openWithSafari"
郵件: "menuItem:share:email"
一些特殊公眾號: "menuItem:share:brand"
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
<!--
wx.config({
debug: true, // 開啟除錯模式,呼叫的所有api的返回值會在客戶端alert出來,若要檢視傳入的引數,可以在pc端開啟,引數資訊會通過log打出,僅在pc端時才會列印。
appId: 'wx99a066ed3be3d52e', // 必填,公眾號的唯一標識
timestamp: 1462521975, // 必填,生成簽名的時間戳
nonceStr: '9f2c415b-0b8a-48be-ae2c-b4b92a76f494', // 必填,生成簽名的隨機串
signature: '0f978b1b7884092cfb825fed7ea18bc9b9fd3b27',// 必填,簽名,見附錄1
jsApiList: ['onMenuShareAppMessage'] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});
wx.ready(function () {
wx.onMenuShareTimeline({
title: '分享標題', // 分享標題
link:"分享的url,以http或https開頭",
imgUrl: "http://images2015.cnblogs.com/blog/340216/201603/340216-20160330130105738-634805951.png" // 分享圖示
});
// 獲取“分享給朋友”按鈕點選狀態及自定義分享內容介面
wx.onMenuShareAppMessage({
title: '分享標題', // 分享標題
desc: "分享描述", // 分享描述
link:"分享的url,以http或https開頭",
imgUrl: "http://images2015.cnblogs.com/blog/340216/201603/340216-20160330130105738-634805951.png", // 分享圖示
type: 'link', // 分享型別,music、video或link,不填預設為link
});
});
//-->
</script>
</head>
<body>
</body>
</html>