建立微信公众号测试帐号-Java本地服务

优采云 发布时间: 2020-08-09 03:56

  这里的重点是页面授权回调的域名.

  

  

  这是第一个坑. 在测试编号中,您可以填写域名ip,甚至不需要填写域名,这极大地方便了测试授权的使用. 回调页面表示微信用户关注您的官方账号. 当他选择授权登录时,我们可以调用微信界面来获取他的基本微信信息,例如唯一的微信openid,然后返回到我们的页面之一,或者这是用于采集用户信息的服务. 页面或服务必须在此域名下. 假设我填写了

  例如,如果我想返回页面,它可以是:

  ,

  返回服务:

  只要在此域名下,无论嵌入多少层. 请注意,不能在前面添加https或http前缀.

  在回调域名中,如果您的项目名称由下划线组成,

  例如,要访问您的项目,请删除带下划线的项目名称. 尽管删除的项目名称只能映射回本地启动服务器,而不是映射回项目,但这不会造成伤害.

  好的,这里很多人说,如果没有域名,我该怎么办,那是第二种材料,一个可以映射到Intranet的域名.

  我使用的花生壳域名.

  

  

  

  新用户可以获得几个免费域名,他们也可以使用这些域名,但是对于我来说,测试并购买100个大洋的.com域名非常方便.

  然后通过花生壳内部网下载客户端

  

  

  

  您拥有的域名将显示在这里,包括您发送的域名.

  

  

  随意编写应用程序名称,域名是下属之一,映射是HTTP80. 内部主机不知道您可以打开cmd ip config / all来查看您的地址. 我的项目从tomact开始,使用默认端口8080. 最后,进行诊断并在地址栏中键入Internet域名,以确保其他人可以访问您的本地项目.

  

  到目前为止,第二种材料已经准备好了.

  第三个是可以运行的项目...这里将不讨论. 您可以使用springboot + myb,springMVC,struts2来构建可以运行的项目. 如果没有,请搜索其他博客以快速建立一个博客,至少您可以输入一个servelet. 我只是直接运行公司的项目.

  连接授权界面

  首先编写一个链接: APPID&redirect_uri = l&response_type = code&scope = snsapi_base&state = 123#wechat_redirect

  此链接已发送至微信,表明我要开始停靠此界面

  appid: 是测试编号上的appid

  redirect_uri: 我们刚刚在上面填写了,因此这里是在该域名下填写一个HTML以供回调. 必须添加或在这里,必须!

  scope: 这是指要调用的微信界面,snsapi_base是指用户的静默授权,这是用户执行微信授权而没有弹出框提示是否进行授权的情况,因此该界面获取的信息较少,您可以查看详细信息官方技术文档.

  状态: 填写您想要的任何内容.

  我下载了官方的微信调试工具. 如果您按照上述步骤进行操作,则您的链接将不会出现代码错误,redirect_uri和其他错误.

  

  如您所见,在返回的页面上,后缀附有代码. 该代码将被发送到微信以交换刚刚登录的用户的信息. 当然,您可以对上述授权链接进行异步请求,并使用js在页面上获取它. 我是这样子的

  函数GetQueryString(name)

  {

  var reg = new RegExp(“(^ |&)” + name +“ =([^&] *)(&| $)”);

  var r = window.location.search.substr(1).match(reg);

  if(r!= null)返回unescape(r [2]);返回null;

  }

  调用GetQueryString(code)获取地址的参数值.

  获取后,将其发送到后台进行处理. 有很多提交方法. 异步也是可能的,或者将整个表单直接连接到其他值并提交到后台. 根仍然由后台处理.

  仅使用老式的struts2粘贴密钥代码,因此返回String映射以返回到页面,如果您是springMVC控制器,请自行更改

  public String juvenileSubsidy() {

//如果是第二次验证登录则直接发送微信的opendid

String openId =getOpenId();

.......//省略各种去到信息以后的service

return "login_jsp";

}

........

private String getOpenId(){

//appid和secret是测试公众号上的,自行填写,别直接copy,

//code是刚刚获取到的,自行改写参数

String url="https://api.weixin.qq.com/sns/oa"

+ "uth2/access_token?appid="+wxappid+"&"

+ "secret="+appsecret+"&code="+wxcode+""

+ "&grant_type=authorization_code";

String openId="";

try {

URL getUrl=new URL(url);

HttpURLConnection http=(HttpURLConnection)getUrl.openConnection();

http.setRequestMethod("GET");

http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

http.setDoOutput(true);

http.setDoInput(true);

http.connect();

InputStream is = http.getInputStream();

int size = is.available();

byte[] b = new byte[size];

is.read(b);

String message = new String(b, "UTF-8");

JSONObject json = JSONObject.parseObject(message);

openId=json.get("openid").toString();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return openId;

}

  当然,许多博客文章都是关于如何封装地址参数名称的,以便以后可以调用. 一开始,我写得很粗糙以显示效果. 您可以在将来轻松封装它,甚至可以使用xml读取配置信息. 我的私有方法只是返回我需要的String openid. 您可以选择返回对象,或检查正式文档,更改原创范围,非静默授权可以获取更多用户信息.

  接下来是调试观察.

  

  {"access_token":"15_0D9_XTsx2YdwoD5KPd6WHAEc47xLqy4uuQAb06irOd5UgOnzwW3zPRdhMXinpJ7ucvkW3D7coema7QAdA",

"expires_in":7200,

"refresh_token":"15_cz_GGe-k41d_YVVgmrFvQBUvF_LuyuNSB2PTq8YWXHLz0l7Vg8hJnBWjGFMNhTT2NRFqqRYT5gSofww",

"openid":"o-MN1B0FGR1JV398vbSPNZ70xa424",

"scope":"snsapi_base"}

  以上是成功发送到微信界面的json对象. 我叫snsapi_base,所以我只能返回此信息. 这些令牌每次都会刷新,并且这些密钥也被微信用于验证服务器的重要数据,但是在这里它们是无用的. 我得到了所需的openid.

  通过这种方式,获得了微信登录官方账号上唯一识别的ID,并可以通过该ID实现业务逻辑. 同时,可以在本地测试官方帐户服务.

  对于本文开头提到的接口配置信息,此处不需要使用它. 这要求后端发送令牌进行验证.

  最后,您可以将此婴儿链接放在官方帐户的自定义菜单中. 这就是所谓的用户登录授权.

  

  当然,这是测试帐户授权. 正式启动后,它将替换为注册域名,appid被替换为官方官方帐户的ID,其余部分保持不变.

  到目前为止,官方帐户的静默授权已完成!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线