微信开发-网页授权获取用户基本信息


最近在做一个微信公众号的项目,和微信交互,获取用户基本信息是基本需求。获取用户基本信息有很多途径,现在我们讨论的是“网页授权获取用户基本信息”这种方式。

文章需要参考微信开发者文档:点击打开链接

另,会把部分java实现代码贴出来供参考。

微信公众平台通过OAUTH认证获取用户信息,这个过程大体分为以下几个步骤:

1、根据appid以及回调url获取code(时效==5min);

2、根据code获取access_token(时效in(1天、7天、30天、90天));

3、根据access_token获取用户基本信息;

具体例子如下:

1、根据appid和回调url获取code。

     假如微信公众平台配置的业务回调url为:"https://myreturn.com.cn"、appid为:"fdsaadeicekandead";

    再结合文章前边连接给出的文档,那么我们需要请求的url为:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=fdsaadeicekandead&redirect_uri=https%3A%2F%2FmySite/myreturn&response_type=code&scope=snsapi_base&state=123#wechat_redirect

   发起请求的代码

@RequestMapping("/loginWx/")
	public ModelAndView initWxLogin() {
		try {
			String url = "
https://open.weixin.qq.com/connect/oauth2/authorize?appid=fdsaadeicekandead&redirect_uri=https%3A%2F%2FmySite/myreturn&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
ModelAndView modelAndView = new ModelAndView(url);return modelAndView;} catch (UnsupportedEncodingException e) {e.printStackTrace();return new ModelAndView("error");}}



2、根据code获取access_token的代码如下:

@RequestMapping(value="/myreturn")
	public ModelAndView myreturn(String code, String state){
		if (null != code) {
			try {
                            HttpUriRequest httpUriRequest = RequestBuilder.post()
				.setUri("https://api.weixin.qq.com/sns/oauth2/access_token")
				.addParameter("appid", appid)
				.addParameter("secret", secret).addParameter("code", code).addParameter("grant_type", "authorization_code").build();
				Token token = httpClient.execute(httpUriRequest , responseHandler,HttpClientContext.create());				
			} catch (Exception e) {
				e.printStackTrace();
			}
		
			return new ModelAndView("跳转的url");
		
		}
	}
Toke类参照给出的连接定义即可;


3、根据access_token获取用户的基本信息:

HttpUriRequest httpUriRequest = RequestBuilder.post()
				.setUri(BASE_URI+"/sns/userinfo")
/*				.setUri(BASE_URI+"/cgi-bin/user/info")
*/				.addParameter(getATPN(),access_token)
				.addParameter("openid",openid)
				.addParameter("lang","zh_CN")
				.build();
User user = httpClient.execute(httpUriRequest , responseHandler,HttpClientContext.create());

User参照给出的链接指出的用户信息定义即可;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值