Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit aa15f70

Browse files
committed
完善文档
1 parent a6b32b2 commit aa15f70

File tree

1 file changed

+182
-6
lines changed

1 file changed

+182
-6
lines changed

README.md

Lines changed: 182 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,197 @@
11
腾讯云微信小程序服务端 SDK - Java
22
=================================
33

4-
本 SDK 是[腾讯云微信小程序一站式解决方案](https://github.com/tencentyun/weapp-solution)(下文简称「解决方案」)的组成部分。业务服务器可通过本 SDK 为小程序客户端提供云端服务支持,包括:
4+
本 SDK 是[腾讯云微信小程序一站式解决方案][weapp-solution](下文简称「解决方案」)的组成部分。业务服务器可通过本 SDK 为小程序客户端提供云端服务支持,包括:
55

66
1. 登录态鉴权服务
77
2. 信道服务
88

99
## SDK 获取
1010

11-
本项目遵守 [MIT](LICENSE) 协议,可以直接[下载 SDK 源码](https://github.com/tencentyun/weapp-java-server-sdk/archive/master.zip)进行修改、编译和发布。
11+
本项目遵守 [MIT](LICENSE) 协议,可以直接[下载 SDK 源码][sdk-download]进行修改、编译和发布。
1212

13-
> 如果从[腾讯云微信小程序控制台](https://console.qcloud.com/la)购买解决方案并选择 Java 语言,则分配的业务服务器里已经部署了本 SDK 和 Demo 的发行版本。
13+
> 如果从[腾讯云微信小程序控制台][la-console]购买解决方案并选择 Java 语言,则分配的业务服务器里已经部署了本 SDK 和 Demo 的发行版本。
14+
15+
## API
16+
17+
请参考[线上 API 文档][api-url]
1418

1519
## 使用示例(Servlet)
1620

17-
> TODO
21+
### 配置 SDK
1822

19-
## API
23+
SDK 必须经过初始化配置之后才能使用。可以选择使用代码初始化或者配置文件初始化。初始化配置建议在 `Servlet::init()` 里进行。
24+
25+
使用代码初始化:
26+
27+
```java
28+
import com.qcloud.weapp.*;
29+
30+
Configuration configuration = new Configuration();
31+
32+
// 业务服务器访问域名
33+
configuration.setServerHost("199447.qcloud.la");
34+
// 鉴权服务地址
35+
configuration.setAuthServerUrl("http://10.0.12.135/mina_auth/");
36+
// 信道服务地址
37+
configuration.setTunnelServerUrl("https://ws.qcloud.com/");
38+
// 信道服务签名 key
39+
configuration.setTunnelSignatureKey("my$ecretkey");
40+
// 网络请求超时设置,单位为秒
41+
configuration.setNetworkTimeout(30);
42+
43+
ConfigurationManager.setup(configuration);
44+
```
45+
46+
使用配置文件初始化:
47+
48+
```java
49+
import com.qcloud.weapp.*;
50+
51+
var configFilePath = "/etc/qcloud/sdk.config";
52+
ConfigurationManager.setupFromFile(configFilePath);
53+
```
54+
55+
关于 SDK 配置字段的含义以及配置文件格式的更多信息,请参考[服务端 SDK 配置][sdk-config-wiki]
56+
57+
### 使用 SDK 提供登录服务
58+
59+
#### 登录
60+
61+
业务服务器提供一个路由处理客户端的登录请求,直接把该请求交给 SDK 来处理即可完成登录。登录成功后,可以获取用户信息。
62+
63+
```java
64+
import com.qcloud.weapp.*;
65+
import com.qcloud.weapp.authorization.*;
66+
67+
@WebServlet("/login")
68+
public class LoginServlet extends HttpServlet {
69+
/**
70+
* 处理登录请求
71+
* */
72+
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
73+
// 通过 ServletRequest 和 ServletResponse 初始化登录服务
74+
LoginService service = new LoginService(request, response);
75+
try {
76+
// 调用登录接口,如果登录成功可以获得登录信息
77+
UserInfo userInfo = service.login();
78+
System.out.println("========= LoginSuccess, UserInfo: ==========");
79+
System.out.println(userInfo.toString());
80+
} catch (LoginServiceException e) {
81+
// 登录失败会抛出登录失败异常
82+
e.printStackTrace();
83+
} catch (ConfigurationException e) {
84+
// SDK 如果还没有配置会抛出配置异常
85+
e.printStackTrace();
86+
}
87+
}
88+
}
89+
```
90+
91+
> 如果登录失败,[login()][login-api] 方法会抛出异常,需要使用 try-catch 来捕获异常。该异常可以不用处理,抛出来是为了方便业务服务器可以进行记录和监控。
92+
93+
#### 获取会话状态
94+
95+
客户端交给业务服务器的请求,业务服务器可以通过 SDK 来检查该请求是否包含合法的微信小程序会话。如果包含,则会返回会话对应的用户信息。
96+
97+
```java
98+
import com.qcloud.weapp.*;
99+
import com.qcloud.weapp.authorization.*;
100+
101+
@WebServlet("/user")
102+
public class UserServlet extends HttpServlet {
103+
104+
/**
105+
* 从请求中获取会话中的用户信息
106+
*/
107+
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
108+
LoginService service = new LoginService(request, response);
109+
try {
110+
// 调用检查登录接口,成功后可以获得用户信息,进行正常的业务请求
111+
UserInfo userInfo = service.check();
112+
113+
// 获取会话成功,输出获得的用户信息
114+
JSONObject result = new JSONObject();
115+
JSONObject data = new JSONObject();
116+
data.put("userInfo", new JSONObject(userInfo));
117+
result.put("code", 0);
118+
result.put("message", "OK");
119+
result.put("data", data);
120+
response.setContentType("application/json");
121+
response.setCharacterEncoding("utf-8");
122+
response.getWriter().write(result.toString());
123+
124+
} catch (LoginServiceException e) {
125+
e.printStackTrace();
126+
} catch (JSONException e) {
127+
e.printStackTrace();
128+
} catch (ConfigurationException e) {
129+
e.printStackTrace();
130+
}
131+
}
132+
}
133+
134+
```
135+
136+
> 如果检查会话失败,或者会话无效,[Check()][check-api] 方法会抛出异常,需要使用 try-catch 来捕获异常。该异常可以不用处理,抛出来是为了方便业务服务器可以进行记录和监控。
137+
138+
阅读解决方案文档中的[鉴权服务][auth-service-wiki]了解更多解决方案中关于鉴权服务的技术资料。
139+
140+
### 使用 SDK 提供信道服务
141+
142+
业务在一个路由上提供信道服务,只需把该路由上的请求都交给 SDK 的信道服务处理即可。
143+
144+
```java
145+
import com.qcloud.weapp.*;
146+
import com.qcloud.weapp.tunnel.*;
147+
import com.qcloud.weapp.demo.ChatTunnelHandler;
148+
149+
@WebServlet("/tunnel")
150+
public class TunnelServlet extends HttpServlet {
151+
private static final long serialVersionUID = -6490955903032763981L;
152+
153+
/**
154+
* 把所有的请求交给 SDK 处理,提供 TunnelHandler 处理信道事件
155+
*/
156+
protected void service(HttpServletRequest request, HttpServletResponse response)
157+
throws ServletException, IOException {
158+
159+
// 创建信道服务处理信道相关请求
160+
TunnelService tunnelService = new TunnelService(request, response);
161+
162+
try {
163+
// 配置是可选的,配置 CheckLogin 为 true 的话,会在隧道建立之前获取用户信息,以便业务将隧道和用户关联起来
164+
TunnelHandleOptions options = new TunnelHandleOptions();
165+
options.setCheckLogin(true);
166+
167+
// 需要实现信道处理器,ChatTunnelHandler 是一个实现的范例
168+
tunnelService.handle(new ChatTunnelHandler(), options);
169+
} catch (ConfigurationException e) {
170+
e.printStackTrace();
171+
}
172+
}
173+
}
174+
```
175+
176+
使用信道服务需要实现处理器,来获取处理信道的各种事件,具体可参考接口 [TunnelHandler][tunnel-handler-api] 的 API 文档以及配套 Demo 中的 [ChatTunnelHandler][chat-handler-source] 的实现。
177+
178+
阅读解决方案文档中的[信道服务][tunnel-service-wiki]了解更多解决方案中关于鉴权服务的技术资料。
179+
180+
## 反馈和贡献
181+
182+
如有问题,欢迎使用 [Issues][new-issue] 提出,也欢迎广大开发者给我们提 [Pull Request][pr]
183+
184+
[weapp-solution]: https://github.com/tencentyun/weapp-solution "查看腾讯云微信小程序解决方案"
185+
[sdk-download]: https://github.com/tencentyun/weapp-java-server-sdk/archive/master.zip "下载 Java SDK 源码"
186+
[la-console]: https://console.qcloud.com/la "打开腾讯云微信小程序一站式解决方案控制台"
187+
[api-url]: https://tencentyun.github.io/weapp-java-server-sdk/api/ "查看 Java SDK API 文档"
188+
[sdk-config-wiki]: https://github.com/tencentyun/weapp-solution/wiki/%E6%9C%8D%E5%8A%A1%E7%AB%AF-SDK-%E9%85%8D%E7%BD%AE "查看服务端 SDK 配置"
189+
[auth-service-wiki]: https://github.com/tencentyun/weapp-solution/wiki/%E9%89%B4%E6%9D%83%E6%9C%8D%E5%8A%A1 "查看关于鉴权服务的更多资料"
190+
[tunnel-service-wiki]: https://github.com/tencentyun/weapp-solution/wiki/%E9%89%B4%E6%9D%83%E6%9C%8D%E5%8A%A1 "查看关于信道服务的更多资料"
191+
[login-api]: https://tencentyun.github.io/weapp-java-server-sdk/api/com/qcloud/weapp/authorization/LoginService.html#login-- "查看 LoginService::login() 方法 API"
192+
[check-api]: https://tencentyun.github.io/weapp-java-server-sdk/api/com/qcloud/weapp/authorization/LoginService.html#check-- "查看 LoginService::ckeck() 方法 API"
193+
[tunnel-handler-api]: https://tencentyun.github.io/weapp-java-server-sdk/api/com/qcloud/weapp/tunnel/TunnelHandler.html "查看 TunnelHandler 接口 API 文档";
194+
[chat-handler-source]: https://github.com/tencentyun/weapp-java-server-sdk/blob/master/com.qcloud.weapp.demo/src/com/qcloud/weapp/demo/ChatTunnelHandler.java "查看 ChatTunnelHandler 示例代码"
20195

21-
请参考[线上 API 文档](https://tencentyun.github.io/weapp-java-server-sdk/api/)
196+
[new-issue]: https://github.com/CFETeam/qcloud-weapp-server-sdk-csharp/issues/new "反馈建议和问题"
197+
[pr]: https://github.com/CFETeam/qcloud-weapp-server-sdk-csharp/pulls "创建

0 commit comments

Comments
 (0)