微信小程序获取OpenId
微信小程序获取OpenId
微信小程序获取OpenId
在微信小程序中获取OpenId首先需要获取AppId和Secret。
AppId和Secret获取方法
前端
wx.login({
success(res) {
if (res.code) {
//向后端发起网络请求
wx.request({
url: 'http://127.0.0.1:9090/testopenid',
data: {
code: res.code
},
success:(response)=>{
//打印OpenId
console.log(response.data);
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
后端:使用Java语言
package cn.order_api.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestOpenId {
@RequestMapping("/testopenid")
public String getUserInfo(@RequestParam(name = "code") String code) throws Exception {
System.out.println("code" + code);
String url = "https://api.weixin.qq.com/sns/jscode2session";
url += "?appid=xxxx";//将xxxx改成自己的appid
url += "&secret=xxxx";//将xxxx改成自己的appSecret
url += "&js_code=" + code;
url += "&grant_type=authorization_code";
url += "&connect_redirect=1";
String res = null;
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// DefaultHttpClient();
HttpGet httpget = new HttpGet(url); //GET方式
CloseableHttpResponse response = null;
// 配置信息
RequestConfig requestConfig = RequestConfig.custom() // 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000) // 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000) // socket读写超时时间(单位毫秒)
.setSocketTimeout(5000) // 设置是否允许重定向(默认为true)
.setRedirectsEnabled(false).build(); // 将上面的配置信息 运用到这个Get请求里
httpget.setConfig(requestConfig); // 由客户端执行(发送)Get请求
response = httpClient.execute(httpget); // 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
System.out.println("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
res = EntityUtils.toString(responseEntity);
System.out.println("响应内容长度为:" + responseEntity.getContentLength());
System.out.println("响应内容为:" + res);
}
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
JSONObject jo = JSON.parseObject(res);
String openid = jo.getString("openid");
System.out.println("openid" + openid);
return openid;
}
}
【推荐】腾讯自研业务上云,5000万核背后的技术难题破解之道
· 记一次 .NET 某工控图片上传 CPU 爆高分析
· 架构与思维:熔断限流的一些使用场景
· 定制 ASP.NET Core 的身份认证
· 从 WinDbg 角度理解 .NET7 的 AOT 玩法
· 当 xxl-job 遇上 docker → 它晕了,我也乱了!
· .NET跨平台框架选择之一 - Avalonia UI
· Windows之应用安装程序 —— winget
· dafny : 微软推出的形式化验证语言
· 重学c#系列——动态类型[二十二]
· 在 Solidity 中 ++i 为什么比 i++ 更省 Gas?