最近在做微信的公眾號的開發。之前是在一個認證過的微信服務號上開發一些相應的功能。

比如說 對認證過的微信服務好進行 自定義菜單的開發,模板消息的回復以及關鍵詞回復的功能。

但是目前新接了這樣一個需求:要為一個微信的訂閱號做一個類似于推廣的活動,這樣就需要獲取登錄這個活動的用戶的信息,從而判斷該用戶有沒有關注過改訂閱號之類的功能。這樣就需要讓該微信訂閱號獲取到該用戶的個人信息。

這個功能其實我們已經在微信的服務號上實現了,這里來回顧一下具體是如何實現的。

我們先來看微信公眾號開發的文檔: 之微信網頁授權章節。

如果我們要在微信中打開一個第三方的網頁,公眾號可以通過微信網頁授權機制,來獲取用戶的基本信息,進而實現業務邏輯。這是文檔中的原話。通俗的講,微信也可以認為是一個瀏覽器,我們發給某個人一個鏈接,一點這個鏈接,微信會打開相關的頁面。但是如何讓微信知道是哪個用戶打開了這個頁面呢,這樣就需要獲取到一個用戶的信息,當然及時微信獲取了用戶的信息,也不是所有的信息都能獲取到,僅僅能獲取到用戶的昵稱,所在城市,性別等信息,獲取不到微信號的,當然是可以獲取一個,也就是微信號的一個編碼,通過來區分用戶。

我們再來看看文檔,文檔中寫到,微信公眾號請求用戶網頁授權之前,得先獲取網頁授權的接口,也就是說需要到開發 - 接口權限 - 網頁服務 - 網頁帳號 - 網頁授權獲取用戶基本信息”的配置選項中,修改授權回調域名。

1.需要獲取該接口權限

2.需要填寫相關域名。

然后用戶訪問的鏈接url需要按照微信給的格式進行鏈接,也就是說你轉發給別人的鏈接或者分享的二維碼對應的鏈接需要按照微信的格式:

#

其中是該微信公眾號的,的值為一個天轉到你的頁面的地址,這里我說的可能不是太通俗易懂,那么這里借用別人的話:

這個 就是 一個項目的映射地址,當用戶點擊立即體驗超鏈接的時候,會跳轉到授權登錄頁面,當點擊授權登錄之后微信公眾平臺會回調這個地址,并在這個地址上追加code和參數值

code=&=1 此時我們在頁面的代碼中可以獲取到code.

那我項目中的一個例子來講:

我訪問的 地址:%3A%2F%2F%%%.jsp%%%%3D4&=code&=&=789#

我這里跳轉到我一個項目中的.jsp 頁面中了,而在 .jsp 中就可以獲得code

<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	String appId = request.getParameter("appId");
	String code = request.getParameter("code");
	System.out.println("appId:"+appId+", code:"+code);
	
	String linkAction = request.getParameter("linkAction");
	if(linkAction==null){
		linkAction = "0";
	}
	String linkValue = request.getParameter("linkValue");
	if(linkValue==null){
		linkValue = "0";
	}
%>

當然獲得這個code 之后就可以獲得相應的 從而就可以區分出用戶來了。

但是這個認證過的服務好實現的辦法,訂閱號可以嗎?

我試了下,將上述的 地址中的換成是訂閱號的 ,但是結果發現不行,一點鏈接告我“ 參數錯誤或沒有權限”。

這是為什么呢,因為發現訂閱中沒有獲取到微信網頁授權接口的權限,即如圖:

訂閱推廣微信號怎么取消_訂閱推廣微信號怎么弄_微信訂閱號怎么推廣

訂閱號無法獲得該接口權限。然而后面的事情就比較尷尬了,訂閱號沒有此接口,就無法獲取到用戶的信息。但是怎么辦呢,通過各種查網上的信息,發現訂閱號是可以獲得微信的 的 ,那就是在微信開放平臺 將一個訂閱號和服務號做綁定,然后讓訂閱號借用服務號的接口 。但是這種方法還沒有驗證。但是已經有例子了:

在方倍工作室的網站上有這樣的需求

訂閱推廣微信號怎么取消_訂閱推廣微信號怎么弄_微信訂閱號怎么推廣

但是前提條件是先到微信開放平臺做綁定,那今天就先到這兒,寫的比較啰嗦,主要想把過程記錄下來。