微信頁面登錄授權和分享那些事

微信現在在我們的生活中已經是必須品了,很多公司都會基於微信做很多的推廣活動,就例如 投票吧,一個頁面分享出去讓好友來幫忙投票,爲了保證投票的準確性往往需要投票先登錄自己的微信號完成登錄授權後再進行投票,保證 一個用戶只能投票一次,這裏就要涉及到微信的網頁登錄和授權和分享,關於分享主要是分享時的鏈接/標題/描述文字/分享圖標我們可以自定義,因爲如果你不配置微信分享分享就是你當前頁的信息,雖然微信提供了js(http://res.wx.qq.com/open/js/jweixin-1.0.0.js)來幫助我們完成這些事,但是其中的一些小細節還是存在一些個坑的,


1.平臺   

微信公衆平臺 :針對公衆號的,公衆號裏推文的設置,消息提醒,都在這裏操作 http://mp.weixin.qq.com/wiki/home/index.html,負責網頁的登錄

微信開放平臺  :針對應用的,如果你是個APP開發者現在想使用微信登錄,這時候你用的是開放平臺,在這裏你申請自己的應用的信息,AppID和AppSecret,還有就是支付權限也在這裏申請  負責應用的登錄

2.微信登錄

在你的頁面中加入如下代碼就可以調用微信的授權頁面

/******
 * 微信公衆號 登錄驗證,需要用戶自己授權
 * redirect_uri 用戶授權後的回調鏈接 只能是域名方式
 * state 爲了我們自己做校驗用的,這個數當授權成功後微信會給我們傳回來,使用隨機數就可以
 */
function weiChatLogin(redirect_uri,state){
	//回調鏈接一定要驚醒urlencode編碼
	redirect_uri=encodeURIComponent(redirect_uri);  
	window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXX&redirect_uri="+redirect_uri+"&response_type=code&scope=snsapi_userinfo&state="+state+"#wechat_redirect";
}

這裏的appid用的可以公共平臺的appid哦,在授權成功後微信會在回調鏈接中自動拼接code=CODE&state=state  ,code就是微信的此次授權憑證,根據它我們就可以獲取登陸者的個人信息了,state就是我們傳過去的那個,不會改變

看起來很簡單吧,其實還需要一步配置哦


點開修改


這裏設置的域名  不包括 http://  ,也不能包含ip,這個域名哪裏用到嘞,就是上面方法中的redirect_uri參數,這個參數的域名沒跑了就只能是這個aa.bb了,用其他的對不起授權不了,

ps :如果需要在多公衆號、移動應用之間做用戶共通,則需前往微信開放平臺,將這些公衆號和應用綁定到一個開放平臺賬號下


綁定之前 在你的公衆號平臺裏要做好安全設置,不然綁定不了的,


3.微信分享

1.官方的js=JDK使用說明文檔:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 


微信需要我們在自己的服務器上來獲取必要的簽名憑證,

1.https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret

獲得access_token,需啊說明的是 appid和secret用的是公共平臺的你們自己的應用的

2.用1中的access_token來獲取ticket,方法:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token + "&type=jsapi

3.然後將參數拼裝成字符串進行簽名:String nStr = "jsapi_ticket="+jsapi_ticket+"&noncestr="+nonceStr + "&timestamp="+timestamp+"&url="+surl;

簽名算法,微信官方提供的demo中有

4.關於 surl的說明 含義是 當前頁面的完整鏈接,但是有一種情況就是 我們通過後臺去跳轉的頁面,例如 http://xxx/test/?id=123 跳轉到 bb.html,此時在bb.html中鏈接會變            成http://xxx/test.html?id=123,可能是微信自己補充的後綴吧,這這個地方唄坑了好久,傷心...

           最簡單的就是 用js來查看下本頁的完整鏈接  ,

      alert(window.location.href)//查看本頁的完整url

 5.1和2的方法每天有請求次數的限制,所以我們的服務器要最好緩存,一般一個小時就夠

//在配置微信分享時 需要用到調用服務器進行授權處理,會用到當前頁面的鏈接
//這一步如果使用的是window.location.href這種方式得到的當前頁鏈接就一定要encodeURIComponent(),不然,2次分享以後,自定義信息將會消失



不知道爲何 騰訊這麼大的公司會埋這麼多坑,寫文檔和demo的人 工資沒給夠吧


有一些注意事項:1.一個頁面一定要註冊一次,2.簽名一定要對,不然其他的設置都沒用





    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章