微信公衆平臺開發--微信網頁受權

在微信公衆號開發中實現微信用戶自動登錄第三方的功能: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是否有效的接口,其調用方法與第二三步一致。

相關文章
相關標籤/搜索