微信公众平台开发--微信网页授权
在微信公眾號開發中實現微信用戶自動登陸第三方的功能:
條件:
1.公眾號必須為微信認證服務號;
2.在公眾號接口權限->網頁賬號 網頁授權獲取用戶基本信息 修改需要OAuth2.0鑒權的域名;
?
關于網頁授權的兩種scope的區別說明
以snsapi_base為scope發起的網頁授權,靜默授權,不彈出授權頁面,只能獲取微信用戶的openid。
以snsapi_userinfo為scope發起的網頁授權,彈出授權頁面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關注的情況下,只要用戶授權,也能獲取其信息。
用戶管理類接口中的“獲取用戶基本信息接口”,是在用戶和公眾號產生消息交互或關注后事件推送后,才能根據用戶OpenID來獲取用戶基本信息。包括其他微信接口,都是需要該用戶(即openid)關注了公眾號后,才能調用成功的。
?
關于網頁授權access_token和普通access_token的區別
在用戶同意授權后獲取的access_token是針對于用戶的,可以說是微信用戶給第三方網站的授權碼一樣。
而普通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、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項為空。若用戶更換頭像,原有頭像URL將失效。
privilege?? ?用戶特權信息,json 數組,如微信沃卡用戶為(chinaunicom)
unionid?? ?只有在用戶將公眾號綁定到微信開放平臺帳號后,才會出現該字段。
到此便可以獲得了授權的用戶的資料了 至于該用戶是否已關注該微信公眾平臺 需要用戶管理類接口中的“獲取用戶基本信息接口” 去獲得。
官網還提供了 刷新access_token的接口 和 檢查access_token是否有效的接口,其調用方法與第二三步一致。
?
轉載于:https://www.cnblogs.com/LzayCat/p/5495596.html
總結
以上是生活随笔為你收集整理的微信公众平台开发--微信网页授权的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARP数据报格式
- 下一篇: 趁有空,再了解一下GROOVY中关于类的