위 챗 애플 릿 springboot 배경 에서 사용자 의 openid 를 어떻게 가 져 옵 니까?
openid 는 위 챗 애플 릿 에서 직접 가 져 올 수 없습니다.배경 에서 위 챗 에 요청 한 인 터 페 이 스 를 보 낸 다음 에 위 챗 은 json 형식의 문자열 을 배경 으로 되 돌려 주 고 배경 에서 처리 한 후에 위 챗 애플 릿 으로 돌아 가 야 합 니 다.
발 표 된 애플 릿 은 https 도 메 인 이름 이 필요 하 며,테스트 할 때 http 를 사용 할 수 있 습 니 다.
애플 릿 은 app.js 에서 login()의 내용 을 수정 합 니 다.
//
wx.login({
success: res => {
// res.code openId, sessionKey, unionId
if (res.code) {
wx.request({
url: 'http://localhost:84/user/login',
method: 'POST',
data: {
code: res.code
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success(res) {
console.log("openid:"+res.data.openid);
if (res.data.openid != "" || res.data.openid!=null){
//
wx.setStorageSync("openid", res.data.openid);// id
wx.setStorageSync("session_key", res.data.session_key);// session_key
}else{
//
// TODO ,
return false;
}
}
})
} else {
console.log(' !' + res.errMsg)
}
}
})
여기 서 요 청 했 어 요.http://localhost:84/user/login배경 처리 클래스:
package com.ft.feathertrade.handler;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ft.feathertrade.entity.OpenIdJson;
import com.ft.feathertrade.utils.HttpUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
@RestController
public class LoginHandler {
private String appID = "";
private String appSecret = "";
@PostMapping("/user/login")
public String userLogin(@RequestParam("code") String code) throws IOException {
String result = "";
try{// , code openid。HttpUtil , ,Configure ,
result = HttpUtil.doGet(
"https://api.weixin.qq.com/sns/jscode2session?appid="
+ this.appID + "&secret="
+ this.appSecret + "&js_code="
+ code
+ "&grant_type=authorization_code", null);
}
catch (Exception e) {
e.printStackTrace();
}
ObjectMapper mapper = new ObjectMapper();
OpenIdJson openIdJson = mapper.readValue(result,OpenIdJson.class);
System.out.println(result.toString());
System.out.println(openIdJson.getOpenid());
return result;
}
}
HttpUtil 도구 종류:
package com.ft.feathertrade.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.httpclient.HttpStatus;// maven jar
/** pom.xml
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
**/
public class HttpUtil {
public static String doGet(String urlPath, HashMap<String, Object> params)
throws Exception {
StringBuilder sb = new StringBuilder(urlPath);
if (params != null && !params.isEmpty()) { //
sb.append("?");
Set<Entry<String, Object>> set = params.entrySet();
for (Entry<String, Object> entry : set) { // map
String key = entry.getKey();
String value = "";
if (null != entry.getValue()) {
value = entry.getValue().toString();
//
value = URLEncoder.encode(value, "UTF-8");
}
sb.append(key).append("=").append(value).append("&");
}
sb.deleteCharAt(sb.length() - 1); // &
}
// System.out.println(sb.toString());
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000); // 5s
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpStatus.SC_OK) {// HttpStatus.SC_OK ==
// 200
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
StringBuilder sbs = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sbs.append(line);
}
return sbs.toString();
}
return null;
}
}
OpenIdJSon 의 실체 클래스:
package com.ft.feathertrade.entity;
public class OpenIdJson {
private String openid;
private String session_key;
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getSession_key() {
return session_key;
}
public void setSession_key(String session_key) {
this.session_key = session_key;
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콩짜개 검색 - 위 챗 공공 플랫폼 접속 (wechatpy)위의 글 은 위 챗 공공 플랫폼 을 어떻게 연결 하 는 지 소 개 했 지만 그 안의 검증 코드 는 우리 가 스스로 실현 한 것 이다.그러나 지금 우 리 는 더 좋 은 선택 이 생 겼 다.위 챗 (WeChat) 퍼 블...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.