导航:首页 > 编程语言 > java微信网页授权

java微信网页授权

发布时间:2023-06-06 05:33:53

‘壹’ java基于微信开发,用oauth2静默授权是,回调的url总是执行两次,怎么回事呀

  1. 用户关注微信公众账号;

  2. 微信公众账号提供用户请求授权页面URL;

  3. 用户点击授权页面URL,将向服务器发起请求;

  4. 服务器询问用户是否同意授权给微信公众账号;

  5. 用户同意(scope为snsapi_base时无此步骤);

  6. 服务器将CODE通过回调传给微信公众账号;

  7. 微信公众账号获得CODE;

  8. 微信公众账号通过CODE向服务器请求Access Token;

  9. 服务器返回Access Token和OpenID给微信公众账号;

  10. 微信公众账号通过Access Token向服务器请求用户信息;

  11. 服务器将用户信息回送给微信公众账号。

‘贰’ 紧急求助,微信设置“开发者中心”的 OAuth2.0网页授权设置

1.OAuth 2.0网页授权有两种模式:

‪(1)
Base(基本型),用户可直接通过链接访问,相应的微信公众账号只能获取用户的openid,无法获取到其它信息。

‪(2) Userinfo(用户信息型),访问时会弹出授权页面,同意后微信公众账号可以获取用户其它信息,比如昵称、头像、性别、省份等等。
具体的设置方法,你可以按照韩顺平的PHP微信开发课程来设置

‘叁’ java中微信分享链接获取openid,

1 首先,我们需要进入我们的服务号,点击左侧栏开发者中心--->修改网页授权获取用户基本信息的值,假设我们对外的ip为183.33.212.175,tomcat的端口号为8016,这个修改为183.33.212.175:8016。
2 创建WeiXinOauth2Token类。该类具有以下属性:(自行添加get,set方法)

private String accessToken;

private int expiresIn;

private String refeshToken;

private String openId;

private String scope;
3 调用微信的授权接口

4 然后将redirect_uri进行encode
5 获取用户openid

‘肆’ java怎么获取微信的openid

java获取微信的openid的方法是根据授权code来获取的,方法如下:
一个Servlet请求 获取code:
/**
* 根据code取得openId
*
* @param appid 公众号的唯一标识
* @param secret 公众号的appsecret密钥
* @param code code为换取access_token的票据
* @return
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//参数
String code = request.getParameter("code");

if(null != code && !"".equals(code)){
log.info("==============[OAuthServlet]获取网页授权code不为空,code="+code);
//根据code换取openId
OAuthInfo oa = WeixinUtil.getOAuthOpenId(Constants.appId,Constants.appSecret,code);
UserInfo info = WeixinUtil.getUserInfo(oa.getAccessToken(), oa.getOpenId());
if(!"".equals(oa) && null != oa){
request.setAttribute("openid", oa.getOpenId());
request.setAttribute("nickname", info.getNickname());
request.getRequestDispatcher("/index.jsp").forward(request, response);

}else{
log.info("==============[OAuthServlet]获取网页授权openId失败!");
}
}else{
log.info("==============[OAuthServlet]获取网页授权code失败!");
}
}

替换相应的APPID APPSECRET SCOPE。
过code换取网页授权access_token 这里的access_token与基础获取的access_token不同

获取code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

具体做法与上面基本一致。更换相对应的值。需要注意的是code可以写一个Servlet获取。String code = request.getParameter("code");get/post都可以。
这样子就会返回一下json格式数据
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}

‘伍’ 微信web开发者工具如何进行调试微信网页授权

具体操作步骤为:

‘陆’ oauth2.0网页授权微信怎么用java获取code

@RequestMapping(value="oauth2/{type}/{appId}/{scope}", method=RequestMethod.GET)
public ModelAndView index(@PathVariable String type,@PathVariable String appId,@PathVariable String scope,String openId){
ModelAndView view=new ModelAndView();
if(StringUtils.isEmpty(appId)||mapWxAppInfo.get(appId)==null){
view.setViewName("fail");
return view;
}
//scope=snsapi_base 获取用户openId,无需授权
//scope=snsapi_userinfo 获取用户基本信息,需授权
String oauthUrl="https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s#wechat_redirect";
//处理授权回调地址
String callback="http://wx.lrlz.com/wx/callback/"+appId;
if(!StringUtils.isEmpty(openId)){
callback += "/"+openId;
}
oauthUrl=String.format(oauthUrl, appId,callback,scope,type);
log.info("微信授权认证地址="+oauthUrl);
view.setViewName("redirect:" + oauthUrl);
return view;
}

/**
* 处理网页授权回调
* */
@RequestMapping(value="callback/{appId}")
public ModelAndView callback(@PathVariable String appId,String code,String state,String redirectUri,HttpServletRequest req,HttpServletResponse response){
return getCallback(appId,code,state,null);
}

这样就行了

阅读全文

与java微信网页授权相关的资料

热点内容
命令窗口输入后不滚动 浏览:638
C面向切面编程aop例子 浏览:368
windowsrar命令 浏览:379
单片机编程语言有哪些 浏览:441
苹果安卓系统笔记本怎么设置密码 浏览:982
只能加密不能解密有什么用 浏览:239
怎么制造app 浏览:121
电脑解压死机了怎么办 浏览:607
欧洲服务器云进销存 浏览:192
程序员python和java 浏览:949
文件夹怎么插入幻灯 浏览:282
带孩子到崩溃怎么解压 浏览:63
战地一被踢出服务器会显示什么 浏览:837
怎么看手机上所有的app 浏览:365
网络拼命令怎么拼 浏览:836
产品经理和程序员优先选哪个 浏览:393
朴素的app应用怎么推广 浏览:586
怎么查校园卡app专属流量 浏览:437
少儿编程教育培训视频 浏览:562
华为平板如何装两个一样的app 浏览:728