场景介绍
静默登录是指用户在退出应用时如果用户已经进行过登录授权,当用户再次返回应用界面时,应用不希望拉起任何登录授权界面,在后台直接通过静默方式获取用户登录信息。
业务流程
1. 用户进行了触发静默登录的场景,根据应用实际场景由开发者自行设定。
2. 应用调用HuaweiIdSignInOptions.Builder的默认构造方法配置鉴权参数。
3. HMS SDK向应用返回包含授权参数的HuaweiIdSignInOptions对象。
4. 应用调用HuaweiIdSignIn的getClient方法初始化HuaweiIdSignInClient实例。
5. HMS SDK向应用返回HuaweiIdSignInClient对象。
6. 应用调用HuaweiIdSignInClient.silentSignIn方法向HMS SDK发起静默登录请求。
7. HMS SDK检查用户是否符合静默登录的授权,并向应用返回授权结果。
8. 应用根据授权结果自行确定后续处理。
开发步骤
静默登录功能涉及应用的关键开发步骤如下:
1、调用HuaweiIdSignInOptions.Builder的默认构造方法配置授权参数。
1 | HuaweiIdSignInOptions signInOptions = new HuaweiIdSignInOptions.Builder(HuaweiIdSignInOptions.DEFAULT_SIGN_IN).build(); |
2、调用HuaweiIdSignIn的getClient方法初始化HuaweiIdSignInClient对象。
1 | HuaweiIdSignInClient client = HuaweiIdSignIn.getClient(MainActivity.this, signInOptions); |
3、调用HuaweiIdSignInClient.silentSignIn方法发起静默登录请求。
1 | Task<SignInHuaweiId> task = client.silentSignIn(); |
4、处理授权结果。
如果授权成功,可获取用户的华为帐户信息,允许用户登录。
1 2 3 4 5 6 7 | task.addOnSuccessListener(new OnSuccessListener<SignInHuaweiId>() { @Override public void onSuccess(SignInHuaweiId signInHuaweiId) { //获取华为帐户信息 Log.i(TAG, 'displayName:' + signInHuaweiId.getDisplayName()); }}); |
如果授权失败,可能是用户之前未进行过登录授权,应用可自行确认是否需要调用HuaweiIdSignInClient的getSignInIntent方法显式拉起登录授权页面。
1 2 3 4 5 6 7 8 9 10 | task.addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { //登录失败,您可以尝试使用getSignInIntent()方法显式登录 if (e instanceof ApiException){ ApiException apiException = (ApiException)e; Log.i(TAG, 'sign failed status:' + apiException.getStatusCode()); } } }); |





































苏公安网备 32011402010933号