我已经获取到微信客户端返回的code,但是通过https://api.weixin.qq.com/sns/oauth2/access_toke网址没有获取到openid,网址无效果
//重写onresume()方法
@Override
protected void onResume() {
if (type != null && type.equals("mwx")) {
SharedPreferences settings = getSharedPreferences("setting", 0);
String code = settings.getString("code", null);
if (code != null && !code.equals("")) {
showProgress(true);
getOpenid(code);
}
settings.edit().clear();
settings.edit().commit();
}
super.onResume();
}
// 获取微信用户的openid和access token
public void getOpenid(String code) {
final AsyncHttpClient httpClient = Gl.sharedAsyncClient();
RequestParams params = new RequestParams();
params.put("appid", Constants.wxAPP_ID);
params.put("secret", Constants.wxAppSecret);
params.put("code", code);
params.put("grant_type", "authorization_code");
String httpurl = "https://api.weixin.qq.com/sns/oauth2/access_token";
httpClient.get(httpurl, params, new JsonHttpResponseHandler() {
@Override public void onSuccess(int statusCode, Header[] headers, JSONObject response) { try { String opendid = response.getString("openid"); if (opendid != null && !opendid.equals("")) { openid = response.getString("openid"); otherLogin("mwx", opendid); } } catch (JSONException e) { e.printStackTrace(); } super.onSuccess(statusCode, headers, response); } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { super.onFailure(statusCode, headers, responseString, throwable); } }); }
注意“[3] 接收微信的请求及返回值” 这部分内容,包名和类名要跟文档里的命名的一样才可以
楼主,跪求你是怎么获取code的?求具体的代码啊。我这个根本无法获取code,反编译之后代码里也没有code这个属性
1.登录公众账号设置OAuth2.0
2.设置菜单按钮URL为OAuth链接
3.页面后台获取:
public String getopenId() { HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html"); String code = request.getParameter("code"); String urlstr = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=<appId>&secret=<secret>&code=" + code + "&grant_type=authorization_code"; JSONObject json; try { json = JSONObject.fromObject(HTTPTools.postToGetJson(urlstr)); openId = json.getString("openid"); } catch (Exception e) { // e.printStackTrace(); return ""; } return openId; }