Skip to content

用户账号

基本介绍

用户账号模块基于 UMS / User Service,为车机场景提供身份与会话能力:

  • 应用鉴权:每个请求携带 application_id(API key)与 application_signature(由 API key + secret 生成)。
  • 身份凭证:支持多种 CredentialType(如 ANONYMOUSEMAIL_PASSWORD 等,以项目配置为准)。
  • 设备绑定:通过 DeviceInfo 上报 device_uid 等设备信息,与账号会话关联。
  • 会话令牌:登录成功后返回 TokenSet,其中 secure_token 用于后续 激活、Receipt 等需授权接口。

建议在 主 SDK 初始化 之前完成 UMS 初始化与用户登录;登录成功后再进行 激活 流程。

核心接口

通过 IdentityAPIManagerUserService 调用:

接口 说明
registerUser(RegisterRequest) 注册新账号
login(LoginRequest) 已有账号登录
registerLogin(RegisterLoginRequest) 注册并登录(一步完成,适合首次装机)
refreshToken(RefreshTokenRequest) 刷新 secure_token
logout(LogoutRequest) 登出

开发说明向导

步骤 1:初始化 UMS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
ServiceContext serviceContext = new ServiceContext();
ApplicationContext ac = new ApplicationContext();
ac.setApplicationId(applicationID);
ac.setApplicationSignature(
    ApplicationSignature.generateSignature(applicationID, applicationSecret));
serviceContext.setApplicationContext(ac);

SDKOptions sdk = SDKOptions.builder()
    .setApiKey(applicationID)       // 若已在 ApplicationContext 配置可省略
    .setApiSecret(applicationSecret)
    .setCloudEndPoint(userServiceUrl)
    .build();

UMSService.initialize(
    sdk,
    application,
    UserServiceManager.ServiceKind.cloud,
    "com.telenav.user.content.provider.UmsProvider");

步骤 2:注册或登录

方式 A — 分步registerUserlogin
方式 B — 一步registerLogin(首次装机常用)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
LoginRequest loginRequest = new LoginRequest();
loginRequest.setApplicationId(applicationID);
loginRequest.setApplicationSignature(
    ApplicationSignature.generateSignature(applicationID, applicationSecret));
loginRequest.setContext(serviceContext);

UserCredentials credentials = new UserCredentials();
credentials.setKey("<USER_KEY>");      // 如邮箱、PTN 或匿名 UUID
credentials.setSecret("<USER_SECRET>");
credentials.setType(CredentialType.ANONYMOUS);  // 按项目选用
loginRequest.setCredentials(credentials);
loginRequest.setDeviceInfo(deviceInfo);

LoginResponse loginResponse = getUserService().login(loginRequest);
// statusCode == 13200 表示成功(UserServiceStatus.OK)
String secureToken = loginResponse.getTokenSet().getSecureToken();
String userId = loginResponse.getUserId();

登录成功后请保存 secureTokenuserId,供 激活 流程使用。

关键参数

参数 描述
application_id Telenav 分配的 API key;生产环境按区域独立配置。
application_signature ApplicationSignature.generateSignature(application_id, secret) 生成。
credentials 用户凭证(key / secret / type)。
device_info 设备信息;device_uid 须全球唯一,与后续 License 绑定相关。
secure_token 登录后写入 TokenSet;激活类 API 必填。
user_id 登录返回的用户 ID。

状态码说明

statusCode 含义 常见原因
13200 成功(UserServiceStatus.OK
13401 鉴权失败 secure_token 缺失、过期或未登录
13400 参数错误 输入参数不全或者格式有误
13500 内部服务出错 服务故障

注意事项

  • ServiceContext.ApplicationContextSDKOptions 中的 API key/secret 应保持一致;生产环境勿混用测试凭据。
  • device_uid 须稳定且全球唯一,避免后续 激活 绑定冲突。
  • secure_token 过期时可调用 refreshToken 刷新,无需重新注册。
  • 账号链路异常时优先排查:网络、CloudEndPointapplication_signature 是否正确。