1. 程式人生 > >微信公眾號開發紀要(3)-獲取用戶openid

微信公眾號開發紀要(3)-獲取用戶openid

如何 ado title mage 如果 href 詳細 註意 分享

項目要求做掃描功能前需要進行用戶綁定,不是所有的用戶都能盤點掃描。這就要求先獲取用戶的openid(微信公眾號的用戶唯一憑證),然後與業務系統的用戶信息進行驗證和綁定。如何獲取用戶的openid在開發指引中,微信網頁授權章節裏,做了詳細的介紹。獲取用戶信息,需要四步。

第一步:用戶同意授權,獲取code
第二步:通過code換取網頁授權access_token
第三步:刷新access_token(如果需要)
第四步:拉取用戶信息(需scope為 snsapi_userinfo)

1:用戶同意授權,獲取code

在確保微信公眾賬號擁有授權作用域(scope參數)的權限的前提下(服務號獲得高級接口後,默認擁有scope參數中的snsapi_base和snsapi_userinfo),引導關註者打開如下頁面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“該鏈接無法訪問”,請檢查參數是否填寫錯誤,是否擁有scope參數對應的授權作用域權限。
這裏需要註意的事宜:獲取用戶授權的接口屬於高級接口,個人訂閱號是沒有該權限的。

技術分享圖片

測試公眾號有這個權限

技術分享圖片

點擊修改,會彈出一個OAuth2.0網頁授權頁面。這裏設置授權回調頁面的域名。
這裏特別註意一定不要輸入http://, 只要輸入域名即可。

技術分享圖片

參數說明

技術分享圖片

2:通過code換取網頁授權access_token

首先請註意,這裏通過code換取的是一個特殊的網頁授權access_token,與基礎支持中的access_token(該access_token用於調用其他接口)不同。公眾號可通過下述接口來獲取網頁授權access_token。如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,也獲取到了openid,snsapi_base式的網頁授權流程即到此為止。

尤其註意:由於公眾號的secret和獲取到的access_token安全級別都非常高,必須只保存在服務器,不允許傳給客戶端。後續刷新access_token、通過access_token獲取用戶信息等步驟,也必須從服務器發起。

請求方法

獲取code後,請求以下鏈接獲取access_token: 
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
參數說明

技術分享圖片

返回說明

正確時返回的JSON數據包如下:

{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }

技術分享圖片

到這裏已經可以獲取openid了,可以用openid和用戶信息進行綁定。接下來就可以做調用微信掃一掃的功能了。

微信公眾號開發紀要(3)-獲取用戶openid