微信扫描二维码登录第三方平台

来源:互联网 发布:最新司令部升级数据 编辑:程序博客网 时间:2024/05/01 17:29

嗯。。。。。。

最近做了一个微信扫码登陆第三方平台功能,说下步骤就行,反正原理你们网上直接百度,我这里写了,估计也没几个人有耐心看

第一步 生成一个链接  

https://open.weixin.qq.com/connect/qrconnect?appid=xxxxxxxxf&redirect_uri=xxxxxxxxxxxx&response_type=code&scope=snsapi_login&state=#wechat_redirect

访问这个链接的时候,就会返回一张二维码 xxxxx地方是参数,,appid需要你开通微信开放平台,开通之后就会有,还有一个secret,,这2个都需要,这里需要注意,微信还有一个公众平台也有这2个参数,他们是不一样的。你开发的时候要区分是开放平台还是公众平台,不要掉进坑里 ,redirect_uri=这个是说,你扫描二维码之后,要跳转的地址,这里跳转回带上code和state 2个参数,所以你编写的时候需要这样



@RequestMapping(value = "/code", params = { "code", "state" }, method = RequestMethod.GET)
@ResponseBody
public Object getAuth(HttpServletRequest request, @RequestParam String code, @RequestParam String state)
throws JSONException {

         ///这里第一步,首先需要通过appid,secret ,code 去获取token 

                https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + APPID + "&secret="
      + SECRET + "&code=" + code + "&grant_type=authorization_code";//获取token的地址,

这里我使用的是 apache下的httpclient


DefaultHttpClient client = new DefaultHttpClient();


try {


   HttpGet getRequest = new HttpGet(access_token_url);
   HttpResponse response = client.execute(getRequest);


   if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
      String strResult = EntityUtils.toString(response.getEntity());


      logger.info("-------jsonResult-------" + strResult);


      JSONObject jsonResult = new JSONObject(strResult);


   
if (jsonResult.has("unionid")){
   unionid= (String) jsonResult.get("unionid");
}

这个参数非常的重要,但是我也懒得讲了,你们自己百度吧,就是要记住一点,这个参数是唯一的,

}

然后经过你后台的鉴权通过之后,跳转,至于鉴权方式,就看你自己额

你可以通过 unionid 去数据库寻找用户,,智力需要说明,,unionid是之前就获取到了用户的,然后初始化到数据库了得,至于怎么查找unionid,需要通过openid


https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN。这个是获取unionid 的,至于这个openid,你获取token 的时候,就会有的,反正你写个脚本,把他们保存数据库,当作初始化,

if (SecurityUtils.getSubject().isAuthenticated()) {
logger.info("  二维码登录成功       :   " + openid);
   logger.info("  二维码登录成功  username     :   " + (String) SecurityUtils.getSubject().getPrincipal());
return new ModelAndView("redirect:x'x'x'x'x'x'x'x'x");
}

原创粉丝点击