產品要作一個分享傳播的活動考慮微信公衆或者小程序javascript
功能/是否支持 | 微信公衆號 | 小程序 |
---|---|---|
一鍵分享好友 | ❎ | ✅ |
分享朋友圈 | ✅ | ❎ |
直接獲取手機號 | ❎ | ✅ |
下載app | ✅ | ❎ |
權衡利弊之後決定使用微信公衆號生態,獲取手機號能夠用戶輸入,分享好友能夠引導用戶進行操做。 要使用公衆號分享後好友能看到標題的描述的內容須要使用JSSDK。前端
微信文檔java
這裏我走進了個誤區,覺得使用JSSDK須要用戶受權,實際不須要也能使用。 接下來咱們開搞。json
哇,好簡單!固然不可能了,這麼簡單不就很差玩了。在第三步的填寫wx.config時還需作比較多的工做小程序
主要是要生成signature後端
const signArgs = {
timestamp: parseInt(new Date().getTime() / 1000), // 時間戳
noncestr: Math.random().toString(36).substr(2), // 隨機字符串
url: location.href.split('#')[0],
jsApiTicket
}
const preSha = `jsapi_ticket=${signArgs.jsApiTicket}&noncestr=${signArgs.noncestr}×tamp=${signArgs.timestamp}&url=${signArgs.url}`
const signResult = {
noncestr: signArgs.noncestr,
timestamp: signArgs.timestamp,
signature: sha1(preSha)
}
wx.config({
debug: false,
appId: weixinAppid,
timestamp: signResult.timestamp,
nonceStr: signResult.noncestr,
signature: signResult.signature,
jsApiList: self.jsApiList
})
複製代碼
我在過程當中遇到兩個坑安全
我在作的時候仍是作了用戶受權(雖然作完發現不須要註釋了) 這裏仍是記錄一下。 主要是從微信獲取codeapp
const url = encodeURIComponent(window.location.href)
window.location.replace(
`${authorize}?appid=${weixinAppid}&redirect_uri=${url}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
)
複製代碼
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
複製代碼
{
"openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
複製代碼