java-微信公众号菜单跳转网页获取openid
程序员文章站
2024-03-18 23:55:16
...
1. 开通开发者帐号
开通开发者帐号,需要提前准备好以下材料:
1. 公司营业执照
2. 300元
3. 公司对公帐号
具体开通流程可以自行到【微信公众号】官网查看操作。
2.配置网页授权
- 成功开发者帐号后,登录公众号后台,点击【开发–接口权限】,找到如下菜单
- 选择修改 网页授权。在弹出的授权页面,按页面提示进行配置:
3.设置自定义菜单
如果你是按微信官网开发文档进行操作的话,恭喜你,你离发疯不远了,
官网的坑实在是太多,而且没有专门针对不同语言的完整示例
这里以java语言为例,进行介绍。
3.1 自定义一个view类型的菜单
菜单创建的json格式如下:
{
"name": "查看余额",
"type": "view",
"url": "http://服务器地址/redirect/redirecttocashout"
}
3.2 定义控制层,接收菜单配置的跳转URL
private static final String STATE_CASHOUT = "cashOut";
@RequestMapping("/redirecttocashout")
public String redirectToCashout() {
return "redirect:https://open.weixin.qq.com/connect/oauth2/authorize?appid="
+ WEIXIN_GZH_APPID + "&redirect_uri=" + SERVER_ROOT_URL
+ "/redirect/weixinoauth&response_type=code&scope=snsapi_base&state=" + STATE_CASHOUT + "#wechat_redirect";
}
3.3 接收重定向的方法处理
@RequestMapping("/weixinoauth")
public String weixinOauth(String code, String state) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
+ WEIXIN_GZH_APPID + "&secret=" + WEIXIN_GZH_SECRET + "&code=" + code + "&grant_type=authorization_code";
HttpClient httpClient = new HttpClient(url);
String content = "";
try {
httpClient.get();
content = httpClient.getContent();
} catch (Exception e) {
e.printStackTrace();
}
String openid = JSONObject.parseObject(content).getString("openid");
String redirect = "";
switch (state){
case STATE_CASHOUT:
redirect = PAISHOU_ROOT_URL + "my_account?openId=" + openid;
break;
}
return "redirect:" + redirect;
}