账号和用户SDK,提供账号能力,包括注册,登录,登出,获取账号,会话管理,人机校验等功能。集成了UI显示并同时提供UI定制的能力。

依赖SDK 概述
API通道 提供API通道能力

初始化

初始化账号及用户SDK前,请先初始化API通道SDK,请参见API 通道 - 初始化

  • com.aliyun.iot.aep.sdk:account为0.0.2以及以上,请使用如下代码完成初始化
    OALoginAdapter adapter = new OALoginAdapter(application);
    
    //如果需要切换到海外环境,请执行下面setDefaultOAHost方法,默认为大陆环境
    //adapter.setDefaultOAHost("sgp-sdk.openaccount.aliyun.com");
    
    adapter.init("online","114d");
    
    LoginBusiness.init(application, adapter, "online");
    					
  • com.aliyun.iot.aep.sdk:account为0.0.2以下,请使用如下代码完成初始化。
    OALoginAdapter adapter = new OALoginAdapter(application);
    LoginBusiness.init(application,adatper,true,"online");

使用方式

如果自定义实现ILoginAdapter时,请注意登录状态的状态变化通知的方式(无论使用内置账号体系,还是三方自有账号体系),其他基础SDK会根据登录状态的变更做特殊业务逻辑处理。

将登录状态变更的消息通知出去的方法,可以参考OALoginAdapter.OALoginCallback中,对mLoginStatusChangeListenerList的处理过程。

注册

在调用登录页面后,在登录页面内会出现注册和忘记密码的功能,无需额外开发。

登录

LoginBusiness.login(new ILoginCallback() {
    @Override
    public void onLoginSuccess() {
        Log.i(TAG,"登录成功");                    
   }

    @Override
    public void onLoginFailed(int code, String error) {
        Log.i(TAG,"登录失败");                    
    }
});
			

退出登录

LoginBusiness.logout(new ILogoutCallback() {
    @Override
    public void onLogoutSuccess() {
        Log.i(TAG,"登出成功");                    
    }

    @Override
    public void onLogoutFailed(int code, String error) {
        Log.i(TAG,"登出失败");                    
    }
});
			

忘记密码

在调起登录页面后,在登录页面内会出现注册和忘记密码的功能,无需额外开发。

修改个人信息

 Map<String, Object> map = new LinkedHashMap<>();
        map.put("displayName", newName);
        OpenAccountUIService oas = OpenAccountSDK.getService(OpenAccountUIService.class);
        oas.updateProfile(getApplicationContext(), map, new LoginCallback() {
            @Override
            public void onSuccess(OpenAccountSession openAccountSession) {
            }

            @Override
            public void onFailure(int i, String s) {
            }
        });
			

修改头像

需要先将头像图片存储到云端,获取该图片的URL,再用如下方式更新。

 Map<String, Object> map = new LinkedHashMap<>();
        map.put("avatarUrl", avatarUrl);
        OpenAccountUIService oas = OpenAccountSDK.getService(OpenAccountUIService.class);
        oas.updateProfile(getApplicationContext(), map, new LoginCallback() {
            @Override
            public void onSuccess(OpenAccountSession openAccountSession) {
            }

            @Override
            public void onFailure(int i, String s) {
            }
        });
			

刷新会话

LoginBusiness.refreshSession(true, new IRefreshSessionCallback() {
    @Override
    public void onRefreshSuccess() {
        Log.i(TAG,"刷新Session成功");
    }

    @Override
    public void onRefreshFailed() {
        Log.i(TAG,"刷新Session失败");
    }
});
			

获取会话ID

添加以下代码,获取当前会话的ID号。

LoginBusiness.getSessionId();

获取用户信息

添加以下代码,获取当前登录用户的信息。

LoginBusiness.getUserInfo();

注销账号

注销账号的时候,同时会把用户绑定的设备都解除绑定关系。参见注销账号

国际化支持

引入OA-UI多语言SDKapi('com.aliyun.iot.sdk:account-oa-ui:0.0.2.5'),该SDK中已经引用com.aliyun.iot.aep.sdk:account-oa相关SDK,不需要重复引用。

OALanguageHelper.setLanguageCode(Locale.US);

目前支持的多语言包括:Locale.US 英文、Locale.SIMPLIFIED_CHINESE 中文、Locale.FRANCE 法语、 Locale.JAPAN 日语、Locale.GERMANY 德语、Locale.KOREA 韩语 、new Locale(“ru”,“RU”)俄语、new Locale(“es”,“ES”)西班牙语、new Locale(“it”,“IT”)意大利语、new Locale(“hi”,“IN”)印地语。

选择国家地区界面中的国家列表信息,除中文外,均显示英文。如需使用其他语言的国家列表信息,需要用户自定义选择国家列表界面。

三方自有账号接入

在对接三方自有账号之前,须先确认默认的账号页面(内置账号体系)可以正常注册和登录,并完成SDK的初始化。

选择自有账号通过OAuth2.0协议接入,配置流程参见用户账号开发指南。

推荐使用如下方式完成自有账号对接。

继承OALoginAdapter,重写login方法,示例代码片段如下

public class MyOALoginAdapter extends OALoginAdapter {
    private Context context;

    public MyOALoginAdapter(Context context) {
        super(context);
        this.context = context;
    }

    @Override
    public void login(ILoginCallback callback) {
        //打开三方登录页面
        context.startActivity(new Intent(context,XXXActivity.class));

        //当XXXActivity登录成功之后,调用
        //authLogin("authCode",callback);
    }

    private void authLogin(String authCode,ILoginCallback callback){
        //authCode 是三方登录页面返回的code
        OpenAccountService service = OpenAccountSDK.getService(OpenAccountService.class);
        service.authCodeLogin(context, authCode, new OALoginCallback(callback));
    }
}

修改初始化代码

MyOALoginAdapter adapter = new MyOALoginAdapter(application);

adapter.init("online","114d");
//将初始化代码中的LoginAdapter替换为自己重写的adapter,注意
LoginBusiness.init(application, adapter, "online");
说明
  • 在调用登录或者登出接口时,通过LoginBusiness.login和LoginBusiness.logout两个方法调用,保持上层业务调用方式的统一。
  • 在继承OALoginAdapter,重写login方法里,调用authLogin方法的第三个参数时,使用OALoginCallback将原始callback进行封装,将登录状态通知到其他基础SDK。