替换相应的APPID APPSECRET SCOPE 第二步:通过code换取网页授权access_token 这里的access_token与基础获取的access_token不同
|
|
1
|
https:
//api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code;
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public
static
OAuthInfo getOAuthOpenId(String appid, String secret, String code ) {
OAuthInfo oAuthInfo =
null
;
String requestUrl = o_auth_openid_url.replace(
"APPID"
, appid).replace(
"SECRET"
, secret).replace(
"CODE"
, code);
JSONObject jsonObject = httpRequest(requestUrl,
"GET"
,
null
);
// 如果请求成功
if
(
null
!= jsonObject) {
try
{
oAuthInfo =
new
OAuthInfo();
oAuthInfo.setAccessToken(jsonObject.getString(
"access_token"
));
oAuthInfo.setExpiresIn(jsonObject.getInt(
"expires_in"
));
oAuthInfo.setRefreshToken(jsonObject.getString(
"refresh_token"
));
oAuthInfo.setOpenId(jsonObject.getString(
"openid"
));
oAuthInfo.setScope(jsonObject.getString(
"scope"
));
}
catch
(JSONException e) {
oAuthInfo =
null
;
// 获取token失败
log.error(
"网页授权获取openId失败 errcode:{} errmsg:{}"
, jsonObject
.getInt(
"errcode"
), jsonObject.getString(
"errmsg"
));
}
}
return
oAuthInfo;
}
|
根据上面代码获取的access_token openid 然后再请求获取userinfo的接口。就能得到微信用户的所有信息了。
具体返回如下。获取用户信息代码不再写。
|
1
2
3
4
5
6
7
8
9
|
{
"sex"
:
1
,
"nickname"
:
"小帅"
,
"privilege"
:[],
"province"
:
"北京"
,
"openid"
:
"o2VKNju8JqCeGVoEWJ1S8Ue_up8E"
,
"language"
:
"zh_CN"
,
"headimgurl"
:
"http://wx.qlogo.cn/mmopen/ribqo6CmxxhyfrokJWjVAedZzl590B4HAbribNVS3CQvplHp8KgmH1kIfqpM4Ek5uTr0lFW8yMDjfZrWLtvjjKLXu1H5icSfRBl/0"
,
"country"
:
"中国"
,
"city"
:
"海淀"
}
|
这就获取到用户的openid。应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)我自己用的作用域为snsapi_userinfo。用户点击跳转页面为
写一个Servlet专门接收传递过来的code。进行相应的操作。
1.OAuthServlet 对code进行access——token的验证
2.GetWeiXinCode的方法调用接口地址。得到相应code。
3.OAuthInfo 返回数据相应的参数的PO类。set/get方法
4.WeiXinUtil添加一个方法 publicOAuth getOAuthInfo(String appid, String secret, String code)得到json格式。并使用JSONObject读取出自己想要的数据。
https://open.weixin.qq.com/ 这个是授权登陆自己网站的和我的这个是有区别的。
个人微博 http://weibo.com/u/2205636212
个人博客 http://my.oschina.net/xshuai/blog
公开QQ 783021975 请先留言说明您!否则不加!