微信受權登陸。和其它受權相似,須要去官方渠道註冊開發者帳號,微信受權登陸須要到微信公衆平臺申請.html
假設獲取到了公衆平臺appid。json
和掃碼相似,進入微信指定的一個連接。後端
可是受權登陸是先直接訪問微信指定的頁面。(掃碼是從本身頁面跳轉到指定微信連接,再回調本身頁面。受權是直接從指定的連接地址跳轉回本身指定頁面)api
先上代碼:微信
var param=location.href.split("?")[1]; //wechat var url=encodeURIComponent("http://h5.laikanxing.com/h5-crowd/html/wechat.html?"+param); window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxadc302736fea5abf&redirect_uri="+ url+"&response_type=code&scope=snsapi_userinfo&"+param+"#wechat_redirect";
param:須要帶回的參數。app
url:回調頁面。(公衆平臺註冊的域)微信公衆平臺
以上步驟能夠從前臺跳轉,能夠從後端進行轉發。看我的業務需求。url
當用戶確認受權登陸之後,微信從定向到指定回調頁面,而且url後拼接了換取用戶信息的code。spa
拿到code之後,和網頁掃碼登陸同樣,進行幾步交換(必須後臺進行)。code
後臺Java代碼:
/** * activity * * @param user * @return */ @RequestMapping(value = "/get/h5/wechat/{code}", method = RequestMethod.GET, produces = "application/json") @ResponseBody public LoginResultJSON getWechatUserInfo(@PathVariable("code") String code) { String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxadc302736fea5abcf&secret=11241d710a5726a57e6ebd2dfd98b0bf&code="+code+"&grant_type=authorization_code"; String result=RequestUtil.get(url); JSONObject jsonObject=new JSONObject(result); String access_token=jsonObject.getString("access_token"); String openid=jsonObject.getString("openid"); url="https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openid; result=RequestUtil.get(url); jsonObject=new JSONObject(result); ThirdPartyUserLoginInfoJSON json=new ThirdPartyUserLoginInfoJSON(); json.setDeviceId(null); json.setDeviceSystem(null); json.setHeadUrl(jsonObject.getString("headimgurl")); json.setNickname(jsonObject.getString("nickname")); json.setSourceType(2); json.setUniqId(jsonObject.getString("openid")); return userService.thirdPartyLogin(json); }
具體換取解釋,請看上篇。第三方登陸集合