1. 程式人生 > >微信授權網頁登陸,oauth

微信授權網頁登陸,oauth

cab type 引導 ice tick iss info 第三方 版本

1、在微信公眾號請求用戶網頁授權之前。開發人員須要先到公眾平臺官網中的開發人員中心頁配置授權回調域名。請註意,這裏填寫的是域名(是一個字符串),而不是URL,因此請勿加http://等協議頭。
2、授權回調域名配置規範為全域名。比方須要網頁授權的域名為:www.qq.com。配置以後此域名以下的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都能夠進行OAuth2.0鑒權。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com無法進行OAuth2.0鑒權
3、假設公眾號登錄授權給了第三方開發人員來進行管理。則不必做不論什麽設置,由第三方取代公眾號實現網頁授權就可以

第一步:用戶允許授權。獲取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參數相應的授權作用域權限。

參數說明

參數 是否必須 說明
appid 公眾號的唯一標識
redirect_uri 授權後重定向的回調鏈接地址,請使用urlencode對鏈接進行處理

特此聲明:此回調的url,應該是在相應公眾號所設置的域名下的訪問路徑。假設不是。則瀏覽器回提示出“該鏈接無法訪問”
假設是jsp,能夠寫成相應的action,
或者(1:“http://www.xiaoyouho.com/login.jsp
比如(2:”www.xiaoyouho.com/wechatAction_login.do,“


一、進行url編碼後。就是例如以下的鏈接了https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4f3aaf0ea47fc448&redirect_uri=http%3a%2f%2fwww.xiaoyouho.com%2flogin.jsp&response_type=code&scope=snsapi_userinfo&state=promotionID#wechat_redirect
在微信瀏覽器裏打開
二、
打開後提示是否登錄授權
點擊同意後。瀏覽器會重定向到上面redirect_uri相應的路徑,且會加上state相應的參數
在,瀏覽器裏復制 已經跳轉的鏈接 就可以查看。
比如(1:
http://www.xiaoyouho.com/login.jsp?code=0212d725f3066e54f482caf6fa79520X&state=promotionID

假設是action,則從定向到相應的action, 那麽我們就能夠在相應的後臺代碼中獲取咱們須要的參數了“code”(下文接掃)
String code = request.getParameter("code");
String param = request.getParameter("state");
response_type 返回類型,請填寫code
scope 應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉。僅僅能獲取用戶openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性別、所在地。而且,即使在未關註的情況下。僅僅要用戶授權,也能獲取其信息
state 重定向後會帶上state參數,開發人員能夠填寫a-zA-Z0-9的參數值,最多128字節

假設是多個參數,“=” 會被編碼成,“%3D”
#wechat_redirect 不管直接打開還是做頁面302重定向時候,必須帶此參數




第二步

用戶允許授權後

假設用戶允許授權,頁面將跳轉至 redirect_uri/?

code=CODE&state=STATE。若用戶禁止授權。則重定向後不會帶上code參數,僅會帶上state參數redirect_uri?state=STATE

code說明 :
code作為換取access_token的票據,每次用戶授權帶上的code將不一樣,code僅僅能使用一次。5分鐘未被使用自己主動過期。


通過code獲取access_token 首先請註意,這裏通過code換取的是一個特殊的網頁授權access_token,與基礎支持中的access_token(該access_token用於調用其它接口)不同。公眾號可通過下述接口來獲取網頁授權access_token。

假設網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同一時候。也獲取到了openid,snsapi_base式的網頁授權流程即到此為止。


假設是重定向到action,則訪問下面的鏈接獲取access_token https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

參數 是否必須 說明
appid 公眾號的唯一標識
secret 公眾號的appsecret
code 填寫第一步獲取的code參數
grant_type 填寫為authorization_code


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

{
   "access_token":"ACCESS_TOKEN",
   "expires_in":7200,
   "refresh_token":"REFRESH_TOKEN",
   "openid":"OPENID",
   "scope":"SCOPE",
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
參數 描寫敘述
access_token 網頁授權接口調用憑證,註意:此access_token與基礎支持的access_token不同
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 用戶唯一標識
scope 用戶授權的作用域,使用逗號(,)分隔

第三步:拉取用戶信息(需scope為 snsapi_userinfo)

假設網頁授權作用域為snsapi_userinfo,則此時開發人員能夠通過access_token和openid拉取用戶信息了。


http:GET(請使用https協議)
https://api.weixin.qq.com/sns/userinfo?

access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN


參數說明

參數 描寫敘述
access_token 網頁授權接口調用憑證,註意:此access_token與基礎支持的access_token不同
openid 用戶的唯一標識
lang 返回國家地區語言版本號,zh_CN 簡體,zh_TW 繁體,en 英語

返回說明

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

{
   "openid":" OPENID",
   " nickname": NICKNAME,
   "sex":"1",
   "province":"PROVINCE"
   "city":"CITY",
   "country":"COUNTRY",
    "headimgurl":    "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", 
	"privilege":[
	"PRIVILEGE1"
	"PRIVILEGE2"
    ],
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}


獲取微信開發的相關資料,技術分享,小程序開發。關註以下的二維碼 技術分享




微信授權網頁登陸,oauth