微信受權登陸實現

微信受權登陸。和其它受權相似,須要去官方渠道註冊開發者帳號,微信受權登陸須要到微信公衆平臺申請.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);
    }

具體換取解釋,請看上篇。第三方登陸集合

相關文章
相關標籤/搜索