您的位置:首页 > 移动开发 > 微信开发

java二次开发微信公众号授权

2016-02-19 16:13 423 查看
这篇文章我想记录一下微信服务号二次开发怎么进行授权登录获取用户信息的。我用流程化的方式来阐述一下怎么实现微信授权取用户信息。

第一:
我们要取得微信授权,加入我们是从菜单栏点击某一个连接菜单进行实现的。所以此时我们菜单的连接就必须是:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

当然如果你选择静默授权,那scope就变成snsapi_base。当你单击这个菜单的时候,就会进行授权第一次访问。这个访问会返回一个code,它会和state的值一起作为参数传给你的重定向地址redirect_uri,而这个重定向url是必须经过url encode转换的。
第二:

在你的重定向uri这边的接口你就必须取出code的值,然后回调微信的

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

接口,这个接口可以返回特殊的access_token,它是针对用户授权的access_token, 跟我们上传文件或者创建菜单的accessToken是有所区别的。如果正常调用会返回这样数据格式的数据:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

 

第三:

你拿着accesstoken的值还有针对用户的唯一标识openid就可以获取用户信息,然后你在这个接口中在通过get请求获取用户信息,访问地址为

http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

取到用户数据后就可以在这个接口中直接跳转到你的app,然后直接静默登录,或者显示用户信息。实现免登录。

其中还涉及到一个重新刷新accesstoken的操作,那是因为这个特殊的accesstoken是有时间显示,第一次的时间较短,再次刷新的时间可以更长。下面我把我接受授权的那个回调接口代码贴出来。当然你那个redirect_uri就要指向这个接口

@RequestMapping(value="/cardniu/mystore",method=RequestMethod.GET)
public String gotoMyShop(HttpServletRequest request,Model model){
log.info("=============进入授权回调接口=========");
WeixinUtil weixinUtil = new WeixinUtil();
String tempCode = request.getParameter("code");
log.info("==========返回回来的code: "+tempCode+"==========");
UserAccessToken userAccesssToken=weixinUtil.getUserAccessToken(tempCode);
OpenUser userInfo = weixinUtil.getOpenUserInfo(userAccesssToken);
JSONObject userInfoObject = JSONObject.fromObject(userInfo);
log.info("=========获取到的用户信息:"+userInfoObject.toString()+"=========");
model.addAttribute("userInfo", userInfo);
model.addAttribute("userToken", userAccesssToken);
model.addAttribute("code", tempCode);
return "myStore/myShop";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信公众号 授权