使用流程

接入流程

使用即时消息服务的流程如下:

graph LR; A[注册应用]-->B[申请使用权限]; B-->C[获取访问令牌]; C-->D[调用消息服务];

注册应用

注册应用需要在统一认证服务中注册,参考注册应用

申请使用权限

调用即时消息服务需要按需申请调用权限,为你的应用申请授权请参考授权申请

获取访问令牌

即时消息服务需要通过访问令牌认证应用身份,因此在调用消息服务接口之前,都需要先通过统一认证服务获取访问令牌。

如何获取访问令牌请参考获取访问令牌

调用消息服务

调用消息服务按照OAuth2标准协议调用即可。

如:

POST /private/send HTTP/1.1
Host: im.example.com
Authorization Bearer 7b3677b3-59f8-4b2b-a9f9-832f2d13bafa

消息发送方

即时消息服务的服务发送方目前分两大类:

  • 个人消息
  • 服务号消息

个人消息

个人消息发送时需要使用能代表个人身份的访问令牌。

服务号消息

在消息服务中,要以服务号的身份发送消息,应用必须向管理员申请使用服务号发消息的权限。

服务号的appId可以在服务号申请后获得,参考服务号接入指南

消息客户端开发

目前品高提供了一个开源的消息客户端,参考品高即时消息服务客户端SDK

在使用SDK之前,需要先构造客户端对象IMClient

IMClient依赖三个对象:

  • IMConfig:跟即时消息服务相关的配置。
  • AccessTokenProvider:管理访问令牌的对象。
  • AccessToken:访问令牌,关于访问令牌的详细说明请看获取访问令牌

按照如下方式构造客户端对象:

String at = "..."; // 访问令牌
String rt = "..."; // 刷新令牌
String type = "..."; // 令牌类型
long expires = "..."; // 过期时间
AccessToken accessToken = new AccessToken();
accessToken.setAccessToken(at);
accessToken.setRefreshToken(rt);
accessToken.setTokenType(type);
accessToken.setExpires(expires);

String tokenUrl = "..."; // 统一认证服务获取token的接口
String clientId = "..."; // 统一认证服务中注册的应用标识
String clientSecret = "..."; // 统一认证服务中注册的应用密钥
String imUrl = "..."; // 即时消息服务地址

IMConfig config = new IMConfig(imUrl);
AccessTokenProvider tp = new AccessTokenProviderImpl(tokenUrl, clientId, clientSecret);
IMClient client = new IMClient(config, tp, accessToken);

注: 如果只是用于服务号发送消息,可以不需要预先构造访问令牌,按照如下方式创建IMClient:

IMClient client = new IMClient(config, tp);
上一篇:即时消息 下一篇:用户发送消息