文档开发者中心
我的

如何静默登录华为帐号

场景介绍

静默登录是指用户在退出应用时如果用户已经进行过登录授权,当用户再次返回应用界面时,应用不希望拉起任何登录授权界面,在后台直接通过静默方式获取用户登录信息。

业务流程

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());
    }
  }
});


点赞
收藏
回复
6
分享
举报
浏览1564 编辑于2019-11-18 22:41未知归属地
全部评论
最多点赞
最新发布
最早发布
可以用接口自动化实现吗?
6楼回复于2022-04-20 06:45 未知归属地

转走了,给楼主点个赞

5楼回复于2019-10-31 08:38 未知归属地

实操了一遍还是很流畅的

4楼回复于2019-10-31 08:36 未知归属地

操作了一遍,还不错

3楼回复于2019-10-31 08:33 未知归属地

学习了楼主

2楼回复于2019-10-31 08:32 未知归属地

学习了~

1楼回复于2019-10-31 08:15 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。