在微信公衆號開發中實現微信用戶自動登錄第三方的功能:json
條件:api
1.公衆號必須爲微信認證服務號;數組
2.在公衆號接口權限->網頁帳號 網頁受權獲取用戶基本信息 修改須要OAuth2.0鑑權的域名;微信
關於網頁受權的兩種scope的區別說明app
以snsapi_base爲scope發起的網頁受權,靜默受權,不彈出受權頁面,只能獲取微信用戶的openid。微信公衆平臺
以snsapi_userinfo爲scope發起的網頁受權,彈出受權頁面,可經過openid拿到暱稱、性別、所在地。而且,即便在未關注的狀況下,只要用戶受權,也能獲取其信息。網站
用戶管理類接口中的「獲取用戶基本信息接口」,是在用戶和公衆號產生消息交互或關注後事件推送後,才能根據用戶OpenID來獲取用戶基本信息。包括其餘微信接口,都是須要該用戶(即openid)關注了公衆號後,才能調用成功的。url
關於網頁受權access_token和普通access_token的區別 spa
在用戶贊成受權後獲取的access_token是針對於用戶的,能夠說是微信用戶給第三方網站的受權碼同樣。code
而普通access_token則相似於公衆平臺給於第三方網站調用接口的憑藉。
根據官網的步驟:
第一步 獲取code:
須要第三方網站進行重定向到包裝後的受權地址 以下
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WxPayConfig::APPID."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=success#wechat_redirect"; header("Location:".$url);
appid 爲微信公衆平臺提供的
redirect_ur 是用戶贊成受權後進入的頁面
scope 爲上面所提的兩種scope 如果須要微信用戶的其餘資料須要snsapi_userinfo類型(無論用戶是否關注公衆號均可以得到資料,能夠用來第三方平臺的用戶資料保留和填充) 若只是但願獲得openid則可使用snsapi_base類型
state 其餘攜帶的參數
第二步 將利用第一步獲取的code換取該用戶受權的access_token:
$code = $_GET['code']; $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"; //經過get發送 $token_data = file_get_contents($token_url); $token_arr = json_decode($token_data,true);
appid 爲微信公衆平臺提供的APPID
secret 爲微信公衆平臺提供的APPSECRET
code 第一步獲取的code
獲取到的參數 進行json_decode轉化成數組 返回的數據以下
access_token 網頁受權接口調用憑證,注意:此access_token與基礎支持的access_token不一樣
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 用戶惟一標識,請注意,在未關注公衆號時,用戶訪問公衆號的網頁,也會產生一個用戶和公衆號惟一的OpenID
scope 用戶受權的做用域,使用逗號(,)分隔
第四步:拉取用戶信息(需scope爲 snsapi_userinfo)
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN"; $resdata = file_get_contents($url); $data = json_decode($resdata,true);
此處於第二步作法一致
access_token 第二步獲取的access_token
openid 第二步獲取的openid
獲取到的參數 進行json_decode轉化成數組 返回的數據以下
openid 用戶的惟一標識
nickname 用戶暱稱
sex 用戶的性別,值爲1時是男性,值爲2時是女性,值爲0時是未知
province 用戶我的資料填寫的省份
city 普通用戶我的資料填寫的城市
country 國家,如中國爲CN
headimgurl 用戶頭像,最後一個數值表明正方形頭像大小(有0、4六、6四、9六、132數值可選,0表明640*640正方形頭像),用戶沒有頭像時該項爲空。若用戶更換頭像,原有頭像URL將失效。
privilege 用戶特權信息,json 數組,如微信沃卡用戶爲(chinaunicom)
unionid 只有在用戶將公衆號綁定到微信開放平臺賬號後,纔會出現該字段。
到此即可以得到了受權的用戶的資料了 至於該用戶是否已關注該微信公衆平臺 須要用戶管理類接口中的「獲取用戶基本信息接口」 去得到。
官網還提供了 刷新access_token的接口 和 檢查access_token是否有效的接口,其調用方法與第二三步一致。