使用SDK进行呼叫之前,您需要首先进行注册或登录。在云视讯平台每个用户有唯一的账号标识。SDK提供三方账号登录以及小鱼系统账号登录两种登录方式。
如果您的业务系统中已有用户账户系统并且希望您业务系统中的用户账户在云视讯平台有唯一的用户标识,以便后期对用户的音视频呼叫进行管理,您可以使用第三方账号登录方法进行登录。您可以使用您的应用系统中的用户账号登录云视讯平台,登录成功后平台将返回当前账户在云视讯平台的呼叫号码,后期该号码将作为该账户的唯一标识,每次登录后均使用同一呼叫号码,因此建议您将您应用系统的用户账户与云视讯平台的呼叫号码建立一一对应的关系并进行保存,以便在后期的业务场景中使用。如果当前登录的账户在云视讯平台不存在,则平台将会注册一个新账户并登录,如果已经存在则使用已存在的账户进行登录。
有效期内三方账号数量默认支持十万,数量如不满足需求请联系小鱼支持人员。
如果您已经在小鱼管理后台创建了账户并希望使用小鱼系统账户登录,您可以使用小鱼账号登录方法进行登录。已创建的小鱼账号统一在小鱼管理后台进行管理,包含账号所属组织机构的管理。
您可以通过loginExternalAccount方法进行三方账户的注册或登录,并通过此方法获取到登录状态的回调。 该方法中userUuid为三方用户登录ID,作为唯一用户标识,取值限制为 长度不超过50位且仅由0-9, a-Z, A-Z, - or _组成 的字符串;displayName字段为用户昵称, 建议使用普通汉字或者英文字符,且不能包含#、@、;、: 、=、-、()、[] 等非法字符。
您也可以通过loginXYlinkAccount方法进行小鱼账户登录,并通过此方法获取到登录状态的回调。 该方法中username为小鱼账户名,password为密码,与小鱼系统账户保持一致。调用登录接口后可以通过ConnectNemoCallback回调获取登录状态通知。 回调接口ConnectNemoCallback中:
采用新版本鉴权时,还应该关注登录成功返回信息中的TokenInfo信息。初始化时注册全局OnStateChangeListener,在调用sdk api 后收到onTokenExpired过期回调时应该调用refreshToken接口刷新token后再次尝试调用。
假如登录后长时间挂机待再次调用SDK业务之前尽量主动的检查token信息是否过期(expires),如果已经过期应当重新登录或者调用refreshToken接口,避免出现业务异常。
提示
登录频次限制1分钟内小于10次。
三方账户登录示例:
JoinMeetingActivity.java
NemoSDK.getInstance().loginExternalAccount("userDisplayName", "externalUserId", new ConnectNemoCallback() {
@Override
public void onFailed(int errorCode) {
//登录失败
}
@Override
public void onSuccess(LoginResponseData resp, boolean isDetectingNetworkTopology) {
//登录成功
}
@Override
public void onNetworkTopologyDetectionFinished(LoginResponseData resp) {
//网络探测结束
}
});
public class TokenInfo {
private String accessToken;
private String refreshToken;
private long expires; //有效时间 单位:秒
}
小鱼账户登录示例:
JoinMeetingActivity.java
NemoSDK.getInstance().loginXYlinkAccount("xyAccount", "accountPassword", new ConnectNemoCallback() {
@Override
public void onFailed(int errorCode) {
//登录失败
}
@Override
public void onSuccess(LoginResponseData resp, boolean isDetectingNetworkTopology) {
//登录成功
}
@Override
public void onNetworkTopologyDetectionFinished(LoginResponseData resp) {
//网络探测结束回调
}
})
token刷新示例:
JoinMeetingActivity.java
NemoSDK.getInstance().setOnStateChangeListener(new NemoSDK.OnStateChangeListener() {
@Override
public void onConnectStateChanged(boolean connected) {
L.i(TAG, "连接状态: " + connected);
}
@Override
public void unauthorized() {
L.i(TAG, "unauthorized: 需要重新登录下");
}
@Override
public void onTokenExpired() {
L.i(TAG, "onTokenExpired: 需要刷新Token");
if (tokenInfo == null) {
return;
}
NemoSDK.getInstance().refreshToken(tokenInfo.getRefreshToken(), new RefreshTokenCallback() {
@Override
public void onRefreshTokenSuccess(TokenInfo tokenInfo) {
L.i(TAG, "onRefreshSuccess: " + tokenInfo.toString());
//保存刷新后的 tokenInfo
}
@Override
public void onRefreshTokenFail(String errorCode, String msg) {
L.i(TAG, "onRefreshFail: " + errorCode);
}
});
}
});