微信授權網頁登陸,oauth,微信授權oauth

來源:互聯網
上載者:User

授權網頁登陸,oauth,授權oauth

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"}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.