导航:首页 > 编程语言 > 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微信网页授权相关的资料

热点内容
android陀螺仪应用 浏览:719
新加坡加密货币骗局 浏览:910
电脑文件夹打开自动变为全屏 浏览:969
简易单断面计算法 浏览:850
php社区程序 浏览:976
python现在就业怎么样 浏览:304
php上传目录权限设置 浏览:736
php合同档案管理系统 浏览:366
tshock服务器地址 浏览:877
php解析文件流 浏览:780
服务器机箱铜片有什么用 浏览:969
乐视手机如何使用原生态安卓 浏览:215
dns服务器怎么备份啊 浏览:865
苹果退款app怎么重新购买 浏览:655
U盘cmd检查文件夹成文件 浏览:66
java路径是否存在 浏览:338
新氧app上怎么测脸型 浏览:787
用指令获得命令方块 浏览:427
流星蝴蝶剑怎么输入命令 浏览:681
keil有红叉但是能编译通过 浏览:498