由於公司最近在做一個微信公眾號的項目,需要獲取用戶openId,我再一次踏入了微信的坑!
先在這里告誡后來的同志,如果一樣要開始做有關微信的東西,最好是有前輩,或者直接看完文檔,不懂或者納悶的地方直接找微信客服!千萬不要直接去懟微信的代碼,簡直了...
我們公司是屬於已認證的服務號的那種公眾平台,前戲基本上該做的已經做了。
先說一說該注意的幾個點,以及很容易忽視的地方。
這里的業務域名、JS接口安全域名和網頁授權域名都是同一個,也就是公司官網認證的域名。然后我們寫的html文件必須要在這個域名對應ip地址的文件夾下,二級或者三級都可以。
還有需要注意一下的就是基本配置的IP白名單這塊!
剛開始研究了幾天文檔,興致滿滿的寫代碼,幾個各種報錯,各種不對勁,甚至調用微信官方接口都各種調不起。找了幾番度娘才發現原來的IP白名單的原因。還有一個坑,我們下次講,這次暫時先說說openId的獲取方式。
在拿到AppID和AppSecret也就是開發者密碼后,就可以調用微信授權接口了。
文檔目錄:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
要獲取用戶openId首先要讓用戶同意授權,獲取code;
授權大概就是這個樣子:
由於我們這邊管事的不希望用戶看到授權頁面,說什么影響用戶享受什么的,什么鬼,授權頁面很正常好不好,我反而覺得沒有授權頁面就拿到信息那才是感覺怪怪的~~.(稍微吐槽吐槽~~)
獲取code的方法,微信文檔的接口這些寫的還算清楚,但是其中的坑就真心的是讓人無奈啊!
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
按照這個接口的格式把每個參數拼接,然后訪問,我起先以為是Ajax訪問,結果......一臉懵逼啊~~
結果這里是直接訪問就OK,參數里面有個redirect_uri,授權后重定向的回調鏈接地址,這里的參數直接寫授權后跳轉的頁面就OK,要注意的是這里的url必須是網頁授權域名里的!
然后就是授權頁面的展示。這里我們管事的要求的是直接不要授權頁面,也就是所謂的靜默跳轉,直接到主頁面!
這里就需要把微信參數中scope的值變成snsapi_base !但是應用授權作用域,snsapi_base (只能獲取用戶openid)!
然后最終的樣子就是這樣子:
然后在主頁面獲取url里的code參數,這個都會,就不多說了,獲取后再調用微信鏈接獲取access_token!
這里就有一個隱形的坑了,而且是大坑!
按理說,code也拿到了,按微信參數一個個填,應該就可以獲取到里面的openId的,但是這里的鏈接是不能前台獲取的,只有讓后台寫接口,我們這邊動態傳入數據給后台,來獲取,然后呢,code這個數據是只能調用一次的,所以,你懂的~~~應該是為了保護公眾號信息被盜取,所以在前台輸入微信接口是調取不到的,所以這也是沒辦法的事情,可是微信好歹提示下啊,啥也不說,哎~~
拿到openId后,用openId拿到對應微信公眾號的關注者信息這些是后台做的事情,你叫他給你個接口,然后你把openId輸入進去,和某些需要的參數就可以直接拿到了,(反正我這邊只需要一個openId~~~)