微信js-sdk分享功能和獲取微信用戶信息的實現


  最近公司的項目中有要用到微信的分享功能,並要獲取分享者的信息,第一次做這樣的需求,自己看了下微信官方文檔,嘗試了幾天,最終實現了需求,現將實現方法記錄在此,方便以后自己查看。

  首先要實現微信鏈接分享並自定義分享標題和描述及縮略圖功能,必須要使用微信提供的js-sdk,首先在要分享的頁面引入js-sdk的js文件,也就是在頁面引入如下文件<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>,

  然后要配置wx.config,配置信息如下:

wx.config({
    debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
    appId: '', // 必填,公眾號的唯一標識
    timestamp: , // 必填,生成簽名的時間戳
    nonceStr: '', // 必填,生成簽名的隨機串
    signature: '',// 必填,簽名
    jsApiList: [] // 必填,需要使用的JS接口列表
});

wx.config中的appId是你微信公眾號的唯一標識,也就是說微信的js-sdk依托於微信公眾號,想要使用js-sdk,必須要有一個公眾號,然后登錄微信公眾平台進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”,然后將你要分享的頁面放在js接口安全域名下,只有在js接口

安全域名下的文件才能調用微信提供的接口,timestamp,nonceStr,signature這幾個參數都是根據appid和appsecret先通過https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential &appid= appid &secret= appsecret,計算出access_token,然后用得到的access_token通過https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=access_toekn &type=jsapi計算出jsapi_ticket,然后通過http://demo.open.weixin.qq.com/jssdk/sample.zip這個官方提供的demo實現簽名,這里我使用的是nodeJS版本,這里通過sign(data, resUrl)方法實現簽名,data表示得到的jsapi_ticket,resUrl,表示分享頁面的鏈接,因為在微信中分享出去的頁面可能url會改變或者頁面的url會動態變化,所以這里的resUrl不能寫死,要從前端傳入,如果頁面url與這里簽名的resUrl不一樣,分享功能就不會成功,計算出的簽名傳給前端,簽名包括timestamp,nonceStr,signature等信息,前端將這些信息填入wx.config,jsApiList是需要使用的JS接口列表,填入需要的接口名就可以了,可以在https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115頁面中的附錄2查看所有JS接口列表,這樣wx.config就完成了。然后通過以下配置來自定義分享功能

                            wx.ready(function() {
                                wx.onMenuShareAppMessage({//分享給好友
                                    title: '', // 分享標題
                                    desc: '', // 分享描述
                                    link: '', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致
                                    imgUrl: '', // 分享圖標
                                    type: '', // 分享類型,music、video或link,不填默認為link
                                    dataUrl: '', // 如果type是music或video,則要提供數據鏈接,默認為空
                                    success: function() {
                                        // 用戶點擊了分享后執行的回調函數
                                    }
                                });

                                wx.onMenuShareTimeline({//分享到朋友圈
                                    title: '', // 分享標題
                                    link: '', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致
                                    imgUrl: '', // 分享圖標
                                    success: function() {
                                        // 用戶點擊了分享后執行的回調函數
                                    }
                                });

                            });

至此分享功能就完成了。

獲取分享者的信息通過微信網頁授權來實現,具體可查看https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842,

具體就是通過以下鏈接來實現

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
把以上鏈接中的appid換成你自己公眾號的appid,redirect_uri寫你要打開的頁面,此項目中寫的還是分享頁面的鏈接,這樣打開上面的鏈接,會得到一個code,然后會回調redirect_uri打開你的頁面,這樣你的頁面后面就會跟一個code參數,這里的redirect_uri不能直接寫,要先把鏈接用urlEncode進行處理,
處理后得到的字符串放入redirect_uri,這樣打開這個鏈接並跳轉到redirect_uri,些時我們就可以獲取到code,得到code我們就能通過
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code得到 access_token和openid,
最后通過
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
就可以得到用戶信息,大致過程就是這樣了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM