• Stars
    star
    261
  • Rank 151,869 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created over 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Wafer - 企业级微信小程序全栈方案

Wafer 服务端 SDK - Java

license

本项目是 Wafer 组成部分,以 SDK 的形式为业务服务器提供以下服务:

SDK 获取

本项目遵守 MIT 协议,可以直接下载 SDK 源码进行修改、编译和发布。

如果使用自动部署并选择 Java 语言,则分配的业务服务器里已经部署了本 SDK 和 Demo 的发行版本。

API

请参考线上 API 文档

使用示例(Servlet)

配置 SDK

SDK 必须经过初始化配置之后才能使用。可以选择使用代码初始化或者配置文件初始化。初始化配置建议在 Servlet::init() 里进行。

使用代码初始化:

import com.qcloud.weapp.*;

Configuration configuration = new Configuration();

// 业务服务器访问域名
configuration.setServerHost("199447.qcloud.la");
// 鉴权服务地址
configuration.setAuthServerUrl("http://10.0.12.135/mina_auth/");
// 信道服务地址
configuration.setTunnelServerUrl("https://ws.qcloud.com/");
// 信道服务签名 key
configuration.setTunnelSignatureKey("my$ecretkey");
// 网络请求超时设置,单位为秒
configuration.setNetworkTimeout(30);

ConfigurationManager.setup(configuration);

使用配置文件初始化:

import com.qcloud.weapp.*;

var configFilePath = "/etc/qcloud/sdk.config";
ConfigurationManager.setupFromFile(configFilePath);

关于 SDK 配置字段的含义以及配置文件格式的更多信息,请参考服务端 SDK 配置

使用 SDK 提供登录服务

登录

业务服务器提供一个路由处理客户端的登录请求,直接把该请求交给 SDK 来处理即可完成登录。登录成功后,可以获取用户信息。

import com.qcloud.weapp.*;
import com.qcloud.weapp.authorization.*;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    /**
     * 处理登录请求
     * */
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 通过 ServletRequest 和 ServletResponse 初始化登录服务
        LoginService service = new LoginService(request, response);
        try {
            // 调用登录接口,如果登录成功可以获得登录信息
            UserInfo userInfo = service.login();
            System.out.println("========= LoginSuccess, UserInfo: ==========");
            System.out.println(userInfo.toString());
        } catch (LoginServiceException e) {
            // 登录失败会抛出登录失败异常
            e.printStackTrace();
        } catch (ConfigurationException e) {
            // SDK 如果还没有配置会抛出配置异常
            e.printStackTrace();
        }
    }
}

如果登录失败,login() 方法会抛出异常,需要使用 try-catch 来捕获异常。该异常可以不用处理,抛出来是为了方便业务服务器可以进行记录和监控。

获取会话状态

客户端交给业务服务器的请求,业务服务器可以通过 SDK 来检查该请求是否包含合法的微信小程序会话。如果包含,则会返回会话对应的用户信息。

import com.qcloud.weapp.*;
import com.qcloud.weapp.authorization.*;

@WebServlet("/user")
public class UserServlet extends HttpServlet {
    /**
     * 从请求中获取会话中的用户信息
     */
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        LoginService service = new LoginService(request, response);        
        try {
            // 调用检查登录接口,成功后可以获得用户信息,进行正常的业务请求
            UserInfo userInfo = service.check();
            
            // 获取会话成功,输出获得的用户信息            
            JSONObject result = new JSONObject();
            JSONObject data = new JSONObject();
            data.put("userInfo", new JSONObject(userInfo));
            result.put("code", 0);
            result.put("message", "OK");
            result.put("data", data);            
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            response.getWriter().write(result.toString());
            
        } catch (LoginServiceException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}

如果检查会话失败,或者会话无效,check() 方法会抛出异常,需要使用 try-catch 来捕获异常。该异常可以不用处理,抛出来是为了方便业务服务器可以进行记录和监控。

阅读解决方案文档中的会话服务了解更多解决方案中关于鉴权服务的技术资料。

使用 SDK 提供信道服务

业务在一个路由上提供信道服务,只需把该路由上的请求都交给 SDK 的信道服务处理即可。

import com.qcloud.weapp.*;
import com.qcloud.weapp.tunnel.*;
import com.qcloud.weapp.demo.ChatTunnelHandler;

@WebServlet("/tunnel")
public class TunnelServlet extends HttpServlet {
    /**
     * 把所有的请求交给 SDK 处理,提供 TunnelHandler 处理信道事件
     */
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        // 创建信道服务处理信道相关请求
        TunnelService tunnelService = new TunnelService(request, response);
        
        try {
            // 配置是可选的,配置 CheckLogin 为 true 的话,会在隧道建立之前获取用户信息,以便业务将隧道和用户关联起来
            TunnelHandleOptions options = new TunnelHandleOptions();
            options.setCheckLogin(true);
            
            // 需要实现信道处理器,ChatTunnelHandler 是一个实现的范例
            tunnelService.handle(new ChatTunnelHandler(), options);
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}

使用信道服务需要实现处理器,来获取处理信道的各种事件,具体可参考接口 TunnelHandler 的 API 文档以及配套 Demo 中的 ChatTunnelHandler 的实现。

阅读解决方案文档中的信道服务了解更多解决方案中关于鉴权服务的技术资料。

在DEMO基础上进行开发

将编译好的文件放到 /var/lib/tomcat/webapps/ 目录下

tomcat代码配置 /etc/tomcat

重启tomcat服务 service tomcat restart

反馈和贡献

如有问题,欢迎使用 Issues 提出,也欢迎广大开发者给我们提 Pull Request

LICENSE

MIT

More Repositories

1

qcloud-documents

腾讯云官方文档
HTML
2,456
star
2

wafer

Wafer - 快速构建具备弹性能力的微信小程序
2,170
star
3

TRTCSDK

腾讯云TRTC音视频服务,国内下载镜像:
C++
1,206
star
4

wafer2-startup

Wafer - 腾讯云下一代小程序综合解决方案
JavaScript
1,021
star
5

MLVBSDK

移动直播 SDK,国内下载镜像:
Objective-C
775
star
6

wafer-client-demo

Wafer - 企业级微信小程序全栈方案
JavaScript
507
star
7

wafer2-quickstart

Wafer2 腾讯云一站式小程序解决方案
411
star
8

wafer2-quickstart-nodejs

Wafer2 Node.js 简化版 Demo
JavaScript
362
star
9

wafer-client-sdk

Wafer - 快速构建具备弹性能力的微信小程序
JavaScript
340
star
10

cos-js-sdk-v5

腾讯云 COS JS SDK(XML API)
JavaScript
326
star
11

wafer2-node-sdk

Wafer2 SDK for Node.js
JavaScript
270
star
12

wafer-php-server-sdk

Wafer - 企业级微信小程序全栈方案
PHP
254
star
13

cos-nodejs-sdk-v5

腾讯云 COS Nodejs SDK(XML API)
JavaScript
231
star
14

wafer2-client-sdk

Wafer client SDK
JavaScript
226
star
15

cos-go-sdk-v5

腾讯云 COS GO SDK(XML API)
Go
201
star
16

wecos

WeCOS——微信小程序 COS 瘦身解决方案
JavaScript
199
star
17

wafer-node-server-demo

Wafer - 企业级微信小程序全栈方案
JavaScript
197
star
18

clb-quic-demo

clb team contribute
Java
196
star
19

qcloud-cos-sts-sdk

QCloud COS STS SDK for Backend Server
Java
192
star
20

wafer2-quickstart-php

Wafer2 PHP 简化版 Demo
PHP
190
star
21

cos-wx-sdk-v5

腾讯云 COS 小程序 SDK(XML API)
JavaScript
188
star
22

cos-php-sdk-v5

cos-php-sdk-v5
PHP
167
star
23

weapp-doc

小程序配置指引、升级方案
165
star
24

TUICallKit

a video calls uikit, include 1v1 calls、group calls etc.
Swift
164
star
25

cos-python-sdk-v5

Python
160
star
26

cos-java-sdk-v5

java sdk for qcloud cos v5 (xml api)
Java
139
star
27

wafer-php-server-demo

Wafer - 企业级微信小程序全栈方案
PHP
138
star
28

wafer-node-server-sdk

Wafer - 企业级微信小程序全栈方案
JavaScript
132
star
29

cosfs

C++
117
star
30

TUIRoomKit

Multi-person Video Conversation uikit, used for various scenarios such as Work Collaboration, Remote Medical, and Online Education.
Java
115
star
31

blog

Blog to share events or technique topics
109
star
32

tencentcloud-exporter

TencentCloud Prometheus Exporter
Go
108
star
33

serverless-demo

demo for serverless
105
star
34

wafer-csharp-server-sdk

Wafer - 企业级微信小程序全栈方案
C#
93
star
35

wecos-ugc-upload-demo

WeCOS-UGC-DEMO资源上传示例
JavaScript
90
star
36

TUILiveRoom

腾讯云TRTC针对直播、语聊、视频通话等推出的低代码解决方案~
Java
84
star
37

LiteAVProfessional_Android

84
star
38

scfcli

serverless cli
Python
83
star
39

TWebLive

Vue
83
star
40

image-java-sdk-v2.0

Java
83
star
41

tsf-simple-demo

Tencent Service Framework Demo
Java
82
star
42

wafer-node-session

Standalone node session middleware for wechat micro application
JavaScript
81
star
43

hadoop-cos

hadoop-cos(CosN文件系统)为Apache Hadoop、Spark以及Tez等大数据计算框架集成提供支持,可以像访问HDFS一样读写存储在腾讯云COS上的数据。同时也支持作为Druid等查询与分析引擎的Deep Storage
Java
75
star
44

wafer2-aai-nodejs

腾讯云小程序解决方案语音识别 Node.js Demo
JavaScript
73
star
45

cos_migrate_tool_v5

Java
67
star
46

TIC

腾讯云互动课堂
C++
65
star
47

coscmd

Python
62
star
48

scf-go-lib

scf go lib
Go
55
star
49

cos-js-sdk-v4

腾讯云 COS JS SDK(JSON API)
JavaScript
50
star
50

cos-cpp-sdk-v5

C++
47
star
51

iot-device-java

IoT Hub & Explorer 设备端 SDK (Java & Android)
Java
45
star
52

imsdk_restapi-php-sdk

IMSDK-PhpServerSDK使用说明 https://www.qcloud.com/doc/product/269/1538
PHP
43
star
53

cos-php-sdk-v4

Php SDK for COS v4
PHP
43
star
54

qcloud-sdk-dotnet

C#
42
star
55

scf-demo-repo

Python
42
star
56

TencentIMFlutterDemo

腾讯云即时通信IMdemo
Dart
42
star
57

tls-sig-api-v2-java

Java
41
star
58

LiteAVProfessional_iOS

Objective-C
40
star
59

cos-python-sdk-v4

Python SDK for COS v4
Python
39
star
60

iot-link-android

IoT 应用端 App & SDK
Kotlin
38
star
61

cos-ftp-server-V5

腾讯云对象存储(COS-V5)的FTP Server
Python
37
star
62

tc-iot-at-sdk-stm32-freertos-based-example

tc-iot-at-sdk-stm32-freertos-based-example 面向使用支持腾讯AT指令的模组(2/3/4/5G、NB、WIFI等)接入腾讯物联网平台的终端设备开发者,mcu侧使用[腾讯AT_SDK]的移植示例,示例基于STM32F103 MCU和FreeRTOS的软硬件环境如何实现HAL层的移植。
C
37
star
63

wafer2-ci-nodejs-demo

Wafer2 万象优图图像识别 Node.js Demo
JavaScript
36
star
64

TUIVoiceRoom

腾讯云TRTC针对直播、语聊、视频通话等推出的低代码解决方案~
Java
36
star
65

vod-js-sdk-v6

TypeScript
36
star
66

coscli

Go
36
star
67

qcloud-iotexplorer-appdev-miniprogram-sdk-demo

34
star
68

tls-sig-api-v2-php

tls sig api version 2 php
PHP
32
star
69

vod-xiaoshipin-server

腾讯云小视频APP后台代码
JavaScript
32
star
70

cos-java-sdk-v4

java sdk for cos v4
Java
31
star
71

qcloud-sdk-ios

腾讯云服务iOS终端SDK
Objective-C
31
star
72

XiaoZhiBo

Swift
31
star
73

qcloud-sdk-android-samples

腾讯云服务Android SDK samples
Java
30
star
74

iot-device-android

IoT Hub & Explorer 设备端 SDK (Java & Android)
Java
29
star
75

tencent-cloud-iotsuite-embedded-c

This project is deperecated, pleases visit: https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c
29
star
76

serverless-tencent-scf

Serverless framework provider plugin for Tencent SCF(Serverless Cloud Function)
TypeScript
28
star
77

flink-cos-fs

Flink-cos-fs 是腾讯云对象存储系统COS针对Flink的文件系统实现,并且支持了recoverwriter接口。
Java
28
star
78

intlcloud-documents

腾讯云国际站官方文档
HTML
28
star
79

cloudgame-android-sdk

云游戏 Android SDK https://cloud.tencent.com/solution/gs
Java
28
star
80

cos-snippets

COS 官方文档的代码片段
Java
28
star
81

TRTCFlutterScenesDemo

腾讯云实时音视频Flutter版场景Demo
Dart
28
star
82

cos-wx-sdk-v4

腾讯云 COS 微信小程序 SDK(JSON API)
JavaScript
28
star
83

tsf-go

Go
26
star
84

qcloud-iot-sdk-tencent-at-based

qcloud-iot-sdk-tencent-at-based 面向使用支持腾讯AT指令的模组(2/3/4/5G、NB、WIFI等)接入腾讯物联网平台的终端设备开发者
C
26
star
85

cmq-java-sdk

Tencent CMQ JAVA SDK
Java
24
star
86

wafer2-game-quickstart-php

Wafer2 微信小游戏快速开发 Demo
PHP
24
star
87

qcloud-iot-sdk-for-stm32withfreeRTOS-example

腾讯云IOT SDK基于stm32+freeRTOS的移植示例,硬件环境为云+开发者大会提供的卡牌开发板
C
23
star
88

cos-java-sdk

对象存储服务(Cloud Object Service)Java SDK使用说明
Java
22
star
89

TUIChorus

腾讯云TRTC针对直播、语聊、视频通话等推出的低代码解决方案~
Java
21
star
90

cos-php-sdk

对象存储服务(Cloud Object Service)PHP SDK使用说明
PHP
21
star
91

imApiFlutterExample

腾讯云即时通信IM Flutter SDK API Example
Dart
20
star
92

cos-python-sdk

对象存储服务(Cloud Object Service)Python SDK使用说明
Python
20
star
93

tls-sig-api-php

PHP
20
star
94

qcloud-sdk-android

Tencent Cloud COS Android SDK Repository.
Java
20
star
95

iotexplorer-h5-panel-demo

腾讯连连自定义 H5 面板 demo
TypeScript
20
star
96

tls-sig-api-java

Java
19
star
97

cmq-java-tcp-sdk

cmq tcp java sdk
Java
19
star
98

cos-donet-sdk-v4

cos-donet-sdk-v4
C#
18
star
99

qcloud-iot-sdk-android

[DEPRECATED] 请移步至:
Java
18
star
100

cos-auth

一个简单的COS鉴权Server
JavaScript
17
star