Skip to content

Commit 4990c62

Browse files
committed
#727 小程序模块增加内容安全接口
1 parent 314871c commit 4990c62

File tree

3 files changed

+66
-22
lines changed

3 files changed

+66
-22
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package cn.binarywang.wx.miniapp.api;
22

3+
import java.io.File;
4+
35
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
46
import cn.binarywang.wx.miniapp.config.WxMaConfig;
5-
import me.chanjar.weixin.common.bean.WxJsapiSignature;
67
import me.chanjar.weixin.common.error.WxErrorException;
78
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
89
import me.chanjar.weixin.common.util.http.RequestExecutor;
@@ -19,12 +20,24 @@ public interface WxMaService {
1920

2021
String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
2122

23+
String IMG_SEC_CHECK_URL = "https://api.weixin.qq.com/wxa/img_sec_check";
24+
2225
/**
23-
* 获取登录后的session信息
26+
* <pre>
27+
* 校验一张图片是否含有违法违规内容.
28+
* 应用场景举例:1)图片智能鉴黄:涉及拍照的工具类应用(如美拍,识图类应用)用户拍照上传检测;电商类商品上架图片检测;媒体类用户文章里的图片检测等;2)敏感人脸识别:用户头像;媒体类用户文章里的图片检测;社交类用户上传的图片检测等。频率限制:单个 appId 调用上限为 1000 次/分钟,100,000 次/天
29+
* 详情请见: https://developers.weixin.qq.com/miniprogram/dev/api/imgSecCheck.html
30+
* </pre>
31+
*/
32+
boolean imgSecCheck(File file) throws WxErrorException;
33+
34+
/**
35+
* 获取登录后的session信息.
2436
*
2537
* @param jsCode 登录时获取的 code
2638
*/
2739
WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException;
40+
2841
/**
2942
* <pre>
3043
* 验证消息的确来自微信服务器.
@@ -133,6 +146,7 @@ public interface WxMaService {
133146

134147
/**
135148
* 返回模板配置相关接口方法的实现类对象, 以方便调用其各个接口.
149+
*
136150
* @return WxMaTemplateService
137151
*/
138152
WxMaTemplateService getTemplateService();

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,48 @@
11
package cn.binarywang.wx.miniapp.api.impl;
22

3-
import cn.binarywang.wx.miniapp.api.*;
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
import java.util.concurrent.locks.Lock;
8+
9+
import org.apache.http.HttpHost;
10+
import org.apache.http.client.config.RequestConfig;
11+
import org.apache.http.client.methods.CloseableHttpResponse;
12+
import org.apache.http.client.methods.HttpGet;
13+
import org.apache.http.impl.client.BasicResponseHandler;
14+
import org.apache.http.impl.client.CloseableHttpClient;
15+
import org.slf4j.Logger;
16+
import org.slf4j.LoggerFactory;
17+
18+
import cn.binarywang.wx.miniapp.api.WxMaAnalysisService;
19+
import cn.binarywang.wx.miniapp.api.WxMaCodeService;
20+
import cn.binarywang.wx.miniapp.api.WxMaJsapiService;
21+
import cn.binarywang.wx.miniapp.api.WxMaMediaService;
22+
import cn.binarywang.wx.miniapp.api.WxMaMsgService;
23+
import cn.binarywang.wx.miniapp.api.WxMaQrcodeService;
24+
import cn.binarywang.wx.miniapp.api.WxMaService;
25+
import cn.binarywang.wx.miniapp.api.WxMaSettingService;
26+
import cn.binarywang.wx.miniapp.api.WxMaTemplateService;
27+
import cn.binarywang.wx.miniapp.api.WxMaUserService;
428
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
529
import cn.binarywang.wx.miniapp.config.WxMaConfig;
630
import com.google.common.base.Joiner;
731
import com.google.gson.Gson;
832
import me.chanjar.weixin.common.bean.WxAccessToken;
33+
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
934
import me.chanjar.weixin.common.error.WxError;
1035
import me.chanjar.weixin.common.error.WxErrorException;
1136
import me.chanjar.weixin.common.util.DataUtils;
1237
import me.chanjar.weixin.common.util.crypto.SHA1;
13-
import me.chanjar.weixin.common.util.http.*;
38+
import me.chanjar.weixin.common.util.http.HttpType;
39+
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
40+
import me.chanjar.weixin.common.util.http.RequestExecutor;
41+
import me.chanjar.weixin.common.util.http.RequestHttp;
42+
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
43+
import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
1444
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
1545
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
16-
import org.apache.http.HttpHost;
17-
import org.apache.http.client.config.RequestConfig;
18-
import org.apache.http.client.methods.CloseableHttpResponse;
19-
import org.apache.http.client.methods.HttpGet;
20-
import org.apache.http.impl.client.BasicResponseHandler;
21-
import org.apache.http.impl.client.CloseableHttpClient;
22-
import org.slf4j.Logger;
23-
import org.slf4j.LoggerFactory;
24-
25-
import java.io.IOException;
26-
import java.util.HashMap;
27-
import java.util.Map;
28-
import java.util.concurrent.locks.Lock;
2946

3047
import static cn.binarywang.wx.miniapp.constant.WxMaConstants.ErrorCode.*;
3148

@@ -132,6 +149,13 @@ public String getAccessToken(boolean forceRefresh) throws WxErrorException {
132149
return this.getWxMaConfig().getAccessToken();
133150
}
134151

152+
@Override
153+
public boolean imgSecCheck(File file) throws WxErrorException {
154+
//这里只是借用MediaUploadRequestExecutor,并不使用其返回值WxMediaUploadResult
155+
WxMediaUploadResult result = this.execute(MediaUploadRequestExecutor.create(this.getRequestHttp()), IMG_SEC_CHECK_URL, file);
156+
return result != null;
157+
}
158+
135159
@Override
136160
public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException {
137161
final WxMaConfig config = getWxMaConfig();

weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImplTest.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package cn.binarywang.wx.miniapp.api.impl;
22

3+
import java.io.File;
4+
5+
import org.apache.commons.lang3.StringUtils;
6+
import org.testng.annotations.*;
7+
38
import cn.binarywang.wx.miniapp.api.WxMaService;
49
import cn.binarywang.wx.miniapp.config.WxMaConfig;
510
import cn.binarywang.wx.miniapp.test.ApiTestModule;
611
import com.google.inject.Inject;
712
import me.chanjar.weixin.common.error.WxErrorException;
8-
import org.apache.commons.lang3.StringUtils;
9-
import org.testng.annotations.Guice;
10-
import org.testng.annotations.Test;
1113

12-
import static org.testng.Assert.assertNotEquals;
13-
import static org.testng.Assert.assertTrue;
14+
import static org.testng.Assert.*;
1415

1516
/**
1617
* @author <a href="https://github.com/binarywang">Binary Wang</a>
@@ -32,4 +33,9 @@ public void testRefreshAccessToken() throws WxErrorException {
3233
assertTrue(StringUtils.isNotBlank(after));
3334
}
3435

36+
@Test
37+
public void testImgSecCheck() throws WxErrorException {
38+
boolean result = this.wxService.imgSecCheck(new File(ClassLoader.getSystemResource("tmp.png").getFile()));
39+
assertTrue(result);
40+
}
3541
}

0 commit comments

Comments
 (0)