java 微信授權(quán)登錄配置

?官網(wǎng)地址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

官網(wǎng)提供的四個(gè)步驟

第一步:用戶(hù)同意授權(quán)遇骑,獲取code

第二步:通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token

第三步:刷新access_token(如果需要)

第四步:拉取用戶(hù)信息(需scope為 snsapi_userinfo)

附:檢驗(yàn)授權(quán)憑證(access_token)是否有效

一勺馆、獲取code

所需要的參數(shù)

授權(quán)效果

錯(cuò)誤碼的返回

二债蜜、獲取access_token

第一步會(huì)獲得一個(gè)微信返回的code,拿著這個(gè)CODE 還有APPID還有公鑰往微信發(fā)送請(qǐng)求

? ? // 1.調(diào)用getHTMLAccessToken

JSONObject htmlAccessToken = WeChatUtil.getHTMLAccessToken(code);

// 2.獲取用戶(hù)授權(quán)的微信地址

? ? public static? final String GET_HTML_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";

? ? /** java 項(xiàng)目 www.fhadmin.cn

? ? * 3.根據(jù)code獲取access_token

? ? * @param code

? ? * @return access_token,open_id

? ? */

? ? public static JSONObject getHTMLAccessToken(String code) {

? ? ? ? String replace =GET_HTML_ACCESS_TOKEN.replace("APPID", WeChatResources.APPID).replace("SECRET", WeChatResources.APPSECRET).replace("CODE", code);

? ? ? ? log.info("請(qǐng)求url:{}",replace);

? ? ? ? JSONObject jsonObject = HttpUtil.doGet(replace);

? ? ? ? return jsonObject;

? ? }

? ? /**

? ? * 4.發(fā)送請(qǐng)求的doGET方法

? ? */

? ? public static JSONObject doGet(String url) {

? ? ? ? HttpClient httpClient = HttpClientBuilder.create().build();

? ? ? ? HttpGet get = new HttpGet(url);

? ? ? ? JSONObject jsonObject = null;

? ? ? ? try {

? ? ? ? ? ? HttpResponse response = httpClient.execute(get);

? ? ? ? ? ? HttpEntity entity = response.getEntity();

? ? ? ? ? ? if (null != entity) {

? ? ? ? ? ? ? ? String result = EntityUtils.toString(entity);

? ? ? ? ? ? ? ? jsonObject = JSONObject.fromObject(result);

? ? ? ? ? ? }

? ? ? ? } catch (IOException e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

? ? ? ? return jsonObject;

? ? }

//? 5.方法響應(yīng)成功后獲取access_token和openid

Object access_token = htmlAccessToken.get("access_token");

Object openid = htmlAccessToken.get("openid");

參數(shù)說(shuō)明

返回參數(shù)說(shuō)明

三、刷新access_token

由于access_token擁有較短的有效期,當(dāng)access_token超時(shí)后,可以使用refresh_token進(jìn)行刷新,refresh_token有效期為30天菇篡,當(dāng)refresh_token失效之后,需要用戶(hù)重新授權(quán)吱型。

獲取第二步的refresh_token后逸贾,請(qǐng)求以下鏈接獲取access_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

請(qǐng)求方式同步驟二 用HttpUtil.doGet(replace)

參數(shù)說(shuō)明

返回參數(shù)說(shuō)明

四、拉取用戶(hù)信息

//1.根據(jù)access_token,open_id獲取用戶(hù)信息? 從而完成微信的授權(quán)登入

? ? JSONObject userInfo = WeChatUtil.getUserInfo(access_token, openid);

? ? //2.獲取用戶(hù)信息 openid

? ? public static? final String GET_USER_INFO = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";

/**java 項(xiàng)目 www.fhadmin.cn

? ? * 3.根據(jù)access_token,open_id獲取用戶(hù)信息

? ? * @return

? ? */

? ? public static JSONObject getUserInfo(Object access_token,Object open_id){

? ? ? ? String replace = GET_USER_INFO.replace("ACCESS_TOKEN", access_token.toString()).replace("OPENID", open_id.toString());

? ? ? ? JSONObject jsonObject = HttpUtil.doGet(replace);

? ? ? ? return jsonObject;

? ? }

參數(shù)說(shuō)明

返回參數(shù)說(shuō)明

檢驗(yàn)授權(quán)憑證(access_token)是否有效

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末津滞,一起剝皮案震驚了整個(gè)濱河市铝侵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌触徐,老刑警劉巖咪鲜,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異撞鹉,居然都是意外死亡疟丙,警方通過(guò)查閱死者的電腦和手機(jī)颖侄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)享郊,“玉大人览祖,你說(shuō)我怎么就攤上這事〈读穑” “怎么了展蒂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)苔咪。 經(jīng)常有香客問(wèn)我锰悼,道長(zhǎng),這世上最難降的妖魔是什么团赏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任箕般,我火速辦了婚禮,結(jié)果婚禮上舔清,老公的妹妹穿的比我還像新娘丝里。我一直安慰自己,他們只是感情好鸠踪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布丙者。 她就那樣靜靜地躺著,像睡著了一般营密。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上目锭,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天评汰,我揣著相機(jī)與錄音,去河邊找鬼痢虹。 笑死被去,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奖唯。 我是一名探鬼主播惨缆,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼丰捷!你這毒婦竟也來(lái)了坯墨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤病往,失蹤者是張志新(化名)和其女友劉穎捣染,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體停巷,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耍攘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年榕栏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾各。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扒磁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出式曲,到底是詐尸還是另有隱情渗磅,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布检访,位于F島的核電站始鱼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏脆贵。R本人自食惡果不足惜医清,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卖氨。 院中可真熱鬧会烙,春花似錦、人聲如沸筒捺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)系吭。三九已至五嫂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肯尺,已是汗流浹背沃缘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留则吟,地道東北人槐臀。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像氓仲,于是被迫代替她去往敵國(guó)和親水慨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容