1. 程式人生 > >微信公眾號訂閱號以及服務號通過網頁授權獲取使用者openid方法

微信公眾號訂閱號以及服務號通過網頁授權獲取使用者openid方法

官方流程 網頁授權流程分為四步: 1、引導使用者進入授權頁面同意授權,獲取code 2、通過code換取網頁授權access_token(與基礎支援中的access_token不同) 3、如果需要,開發者可以重新整理網頁授權access_token,避免過期 4、通過網頁授權access_token和openid獲取使用者基本資訊(支援UnionID機制)

服務號獲取openid

在微信公眾平臺最後介面許可權中我們可以發現訂閱號是沒有網頁授權的許可權的,服務號必須認證才會有,如圖

一般來說服務號獲取openid的方法是:首先通過前端獲取code,然後請求後臺,後臺通過AppID,AppSecret和code獲取openid以及使用者資訊返回給前端(注:不能在前端獲取,因為AppSecret對於公眾號很重要,放在前端容易被竊取)

下面是我簡單寫的部分前端程式碼,具體思路是:進入頁面回跳自身地址(此時URL中已經有了code引數,擷取code引數傳到後臺),第一次跳轉要快取一個值,然後判斷這個值來決定是否回跳(不然會一直跳轉)

if(!sessionStorage.getItem('load')){
        var    appid='你的id';
        var redirect_uri=encodeURIComponent(window.location.href)    
        window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+redirect_uri+"&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"
        sessionStorage.setItem(
'load','1') }else{ var Url=window.location.href var Urlarr=Url.split("?") var code=Urlarr[1].split("=")[1].split('&')[0] sessionStorage.setItem('code',code) }

後臺各語言程式碼在官方文件中都有,可以參考,這裡就不再贅述。

訂閱號獲取openid

服務號有網頁授權的許可權,但是訂閱號沒有,所以一般來說訂閱號是無法通過網頁授權獲取openid的。

但是服務號可以通過其他方式獲取使用者資訊--->這種方式必須要使用者來點選選單或者傳送資訊後臺才能獲取到使用者資訊,顯然這種不是我們需要的。

那麼又沒有其他方法了呢?

當然有!雖然訂閱號沒有網頁授權的許可權,但是服務號有啊。所以前提是我們要有一個服務號。

方法就是在我們微信公眾號網頁開發的時候,所有用到Appid與AppSecret的地方全部替換為服務號的Appid與AppSecret,這樣的話就相當於我們的訂閱號也有了許可權。親測可用