微信获取openId时,request.getParameter("code")获取的code一直未空,不是为何,求高人指点
但是教程中一办都是 String code=request.getParameter("code");获取code,但是连接中的键response_type,那是不是应该用:String code=request.getParameter("response_type")。但是改成后者依然是获取不到。。。。
2.另外 state也是 null
----------------------------------OAuthServlet.java---------------------------------
public class OAuthServlet extends HttpServlet {
private static final long serialVersionUID=-1847238807216447030L;
@Override
public void doGet (HttpServletRequest request , HttpServletResponse response)
throws ServletException , IOException{
System.out.println("run...........");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//用户同意授权后,获取code
String messageId=null;
**// String code=request.getParameter("code");**
**String code=request.getParameter("response_type");**
String state=request.getParameter("state");
PrintWriter out=response.getWriter();
out.print("1.OAuthServlet....");
System.out.println("state:"+state+";code:"+code);
//用户同意授权、
if(code==null){
out.print("2.OAuthServlet....");
}
else if (!"authdeny".equals(code)) {
try{
out.print("3.OAuthServlet....");
//获取网页授权access_token
WeChatOauth2Token weChatOauth2Token= WeChatUtil.getOauth2AccessToken(code);
//网页授权接口访问凭证
String accessToken=weChatOauth2Token.getAccessToken();
//用户标识
String openId=weChatOauth2Token.getOpenId();
//获取用户信息
SnsUserInfo snsUserInfo=WeChatUtil.getSnsUserInfo(accessToken,openId);
//设置传递的参数
request.setAttribute("snsUserInfo",snsUserInfo);
request.setAttribute("state",state);
System.out.println(openId+"---"+code+"---"+state);
out.print(openId);
out.flush();
out.close();
}catch(Exception e){
System.out.println("获取openId报错:"+e);
}
}
// 跳转到index.jsp
// request.getRequestDispatcher("").forward(request, response);
}
}
补充:
1.微信运行在云服务器上 地址XXX.XX.X.X:80
2.回调的地址在公司服务器上,有域名www.boiler.org/login2
发现访问微信点击:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=自己平台的访问地址&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
直接进入回调的地址,但是没有进入OAuthServlet,使用request.getRequestURL获取不到请求URL。
但是根据网上的教程直接点这个链接,就好了。是还需要别的操作吗?
已解决, 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
redirect_uri回调地址应该是:OAuthServlet方法在web.xml中设置的地址,且是域名(不能是ip地址,用了花生壳)