华为账号服务内容讲解

华为账号服务内容讲解

1.业务简介

华为帐号服务(HUAWEI Account Kit)为您提供了简单、安全的登录授权功能,方便用户快捷登录。用户不必输入帐号、密码和繁琐验证,就可以通过“华为帐号登录”快速登录,即刻使用您的App。

1.1服务特点

  • 接入方便,规范统一

    服务手机、平板、智慧屏等全场景生态,接入规范统一,方便您接入华为生态。

  • 海量用户,全球化服务

    服务全球190+国家和地区,支持70+种语言,服务9亿+用户。

  • 安全可靠,遵循国际标准

    遵循OAuth 2.0和OpenID Connect等国际标准协议,遵循GDPR隐私规范,具备高安全性密码验证和手机号验证双因素认证能力,风险实时通知。

1.2场景介绍

1.2.1 快捷登录应用

终端用户可以使用华为帐号登录应用,首次登录应用需要用户授权确认,后续即可一键登录。且帐号实现全场景生态,一个帐号即可登录所有应用。

img

2.开发流程

您需要按照流程来完成应用的开发工作,完整的开发流程如下图所示。

img

如果您已有集成第三方移动服务的应用程序,可以使用HMS Toolkit提供的Convertor工具将第三方移动服务相关的API接口自动转换为HMS Core相对应的API接口,实现快速转换和集成HMS Core的能力。

2.1注册成为开发者

在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法请参见帐号注册认证

2.2创建应用

参见创建项目在项目下添加应用完成应用的创建。

 

2.3创建您的AGC项目

项目是您在AGC中资源的组织实体,您可以将您的一个应用的不同平台版本添加到同一个项目中。在创建您的应用前,您需要先在AGC中创建您的项目。

  1. 登录 AppGallery Connect 网站,选择“我的项目”。

  2. 在我的项目页面点击“添加项目”。

    img

  3. 输入您预先规划的项目名称,点击“确定”。

    img

  4. 项目创建成功后,会自动进入“项目设置”页面。

此时该项目中还没有应用,您下一步需要在该项目中添加应用。

2.4在项目下添加应用

AGC服务主要在应用开发过程中提供各种开发能力,如果您还没有在您的AGC项目中添加应用,请先完成应用的添加。您可以直接添加一个新应用,也可以添加一个未归属任何项目的已有应用。

  1. AppGallery Connect 网站首页选择“我的项目”。

  2. 在项目列表中点击您的项目。

    img

  3. 在项目设置页面中点击“添加应用”。

     

     

    img

    如果项目中已经存在应用,需要添加新的应用,展开页面顶部的应用选择区域,选择“添加应用”。

    img

  4. 在“添加应用”页面填写应用信息。

img

参数说明
选择平台选择Android
支持设备应用发布后运行的设备类型。
应用名称如果添加一个新应用,请填写新创建的应用名称,要求1-64个字符,创建后将获取一个新的APP ID,应用名称支持在应用信息中修改。如果添加一个已经创建的应用,可以点击应用名称文本框,在展开的应用列表中选择应用。应用的其他参数将自动关联该应用的信息。说明:应用名不能含有“黄赌毒”等低俗敏感字样。
应用包名最终要上架华为应用市场的应用包名。
应用分类● 应用:普通应用。● 游戏:游戏类应用。
默认语言应用的默认语言,根据实际情况选择。

5. 点击“确定”。

2.5生成签名证书指纹

签名证书指纹用于校验应用的真实性,您需要根据签名证书在本地生成签名证书指纹,并在应用上架前将签名证书指纹配置到AppGallery Connect。

在申请前需要满足以下两个条件:

  • 已创建应用程序的签名证书,签名证书创建请参见生成签名证书

  • 当前PC已经安装JDK

操作步骤如下:

先利用androidStudio自动生成密钥库

 

利用androidStudio自动生成密钥库

 

直接下一步

 

填写对应信息

 

 

至此自动生成完毕 在将该密钥库更改成国家标准,具体操作如下

  • Windows

    1. 使用CMD命令打开命令行工具,执行

      命令进入keytool.exe所在的目录(以下样例为JDK安装在C盘的Program Files目录)。

      C:\>cd C:\Program Files\Java\jdk1.8.0_131\bin
    2. 执行命令

      keytool -list -v -keystore

      <keystore-file>

      ,按命令行提示进行操作。<keystore-file>为应用签名文件的完整路径。

      例如:

       keytool -list -v -keystore D:\TestApp.jks
    3. 根据结果获取对应的SHA256指纹。

    4.  

2.6配置签名证书指纹

  1. 登录AppGallery Connect网站,点击“我的项目”。

  2. 在项目列表中找到您的项目,在项目中点击需要配置签名证书指纹的应用。

  3. 在“项目设置 > 常规”页面的“应用”区域,点击“SHA256证书指纹”后的img图标,输入生成的SHA256指纹。

  4.  

  5. 配置完成后点击img

  6.  

配置完成之后 通过华为手机联调既可以实现华为账号进行登录

3.集成HMS Core SDK

针对Android Studio开发环境,华为提供了Maven仓集成方式的HMS Core SDK包。在开始开发前,您需要将HMS Core SDK集成到您的Android Studio开发环境中。

3.1添加当前应用的AppGallery Connect配置文件

 

如果在AppGallery Connect中开通了相关服务则需要将“agconnect-services.json”文件添加到您的App中。

  1. 登录AppGallery Connect网站,点击“我的项目”。

  2. 在项目列表中找到您的项目,在项目中点击需要集成HMS Core SDK的应用。

  3. 在“项目设置 > 常规”页面的“应用”区域,点击“agconnect-services.json”下载配置文件。

    img

  4. 将“agconnect-services.json”文件拷贝到应用级根目录下。

    img

 

 

3.2配置HMS Core SDK的Maven仓地址

 

  1. 打开Android Studio项目级“build.gradle”文件。

    img

  2. 添加HUAWEI agcp插件以及Maven代码库。

    • 在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。

    • 在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。

    • 如果App中添加了

      “agconnect-services.json”

      文件则需要在

      “buildscript > dependencies”

      中增加agcp配置。

      buildscript {
          repositories {
              google()
              jcenter()
              // 配置HMS Core SDK的Maven仓地址。
              maven {url 'https://developer.huawei.com/repo/'}
          }
          dependencies {
              ...
              // 增加agcp配置。
              classpath 'com.huawei.agconnect:agcp:1.4.1.300'
          }
      }
       
      allprojects {
          repositories {
              google()
              jcenter()
              // 配置HMS Core SDK的Maven仓地址。
              maven {url 'https://developer.huawei.com/repo/'}
          }
      } 

    说明

    Maven仓地址无法直接在浏览器中打开访问,只能在IDE中配置。如需添加多个Maven代码库,请将华为公司的Maven仓地址配置在最后。

3.3添加编译依赖

 

  1. 打开应用级的“build.gradle”文件。

    img

  2. 在“dependencies”中添加如下编译依赖。

    dependencies {
        implementation 'com.huawei.hms:hwid:{version}'
    }

    说明

    hwid为华为帐号服务,{version}替换为实际的SDK版本号,版本号索引请参见版本更新说明。例如:implementation 'com.huawei.hms:hwid:5.0.3.302'。

  3. 在文件头apply plugin: 'com.android.application'下一行添加如下配置。

    apply plugin: 'com.huawei.agconnect'

3.3多语言设置

 

  • 如果您的应用不需要设置只支持某些特定语言,则请忽略本步骤。应用将默认支持所有HMS Core SDK支持的语言。

  • 如果您的应用需要设置只支持某些特定语言,则可通过本步骤配置。

    1. 打开应用级的

      “build.gradle”

      文件。

      img

    2. 在“android > defaultConfig”

      中新增

      “resConfigs”

      ,配置需要支持的语种,配置格式如下:

      android {        
         defaultConfig {                ...                
          resConfigs "en", "zh-rCN", "需要支持的其他语言"        
         }
       }        

    HMS Core SDK支持的语言列表请参见HMS Core SDK支持的语言

3.4同步工程

在完成以上的配置后,点击工具栏中的gradle同步图标,完成“build.gradle”文件的同步,将相关依赖下载到本地。

img

说明

如果出现错误,请检查网络连接是否正常,以及检查“build.gradle”文件是否正确。

3.5配置元数据

 

  • 如果您的应用上架到Google Play,当用户手机上没有安装HMS Core(APK)或者版本过低时,调用API会返回错误。

  • 如果您的应用不需要上架到Google Play,需要在

    “AndroidManifest.xml”

    的Application中增加以下元数据。

    <application>
        <meta-data     
           android:name="com.huawei.hms.client.channel.androidMarket"  
           android:value="false" />
        ...
    </application>

    添加以上配置后,当手机上没有安装HMS Core(APK)或者版本过低时,可以通过以下方案解决问题。

    • 通过Activity调用API时,HMS Core SDK会自动安装或升级HMS Core(APK)。

    • 通过Context调用API时,返回错误和解决方案。您需要将如下解决方案配置到接口返回的Task回调中,通过调用解决方案安装或升级HMS Core(APK)。

      task.addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(Exception e) {
              // 当收到的异常为ResolvableApiException实例时,说明这时需要引导安装或升级HMS Core(APK)。
              if (e instanceof ResolvableApiException) {
                  ResolvableApiException apiException = (ResolvableApiException)e;
                  // 调用apiException中的pending intent,传入requestCode参数。
                  try {
                      apiException.startResolutionForResult(MainActivity.this, requestCode);
                  } catch (IntentSender.SendIntentException ex) {
                      ex.printStackTrace();
                  }
              }
          }
      });

4.配置混淆脚本

您编译APK前需要配置混淆配置文件,避免混淆HMS Core SDK导致功能异常。

Android Studio开发环境里的混淆配置文件是“proguard-rules.pro”。

  1. 在应用级根目录下打开混淆配置文件“proguard-rules.pro”。

  2. 加入排除HMS Core SDK的混淆配置。

    -ignorewarnings
    -keepattributes *Annotation*
    -keepattributes Exceptions
    -keepattributes InnerClasses
    -keepattributes Signature
    -keepattributes SourceFile,LineNumberTable
    # 若SDK版本低于5.0.3.301,还需添加如下配置:
    -keep class com.huawei.updatesdk.**{*;}
    -keep class com.huawei.hms.**{*;}xxxxxxxxxx -ignorewarnings-keepattributes *Annotation*-keepattributes Exceptions-keepattributes InnerClasses-keepattributes Signature-keepattributes SourceFile,LineNumberTable# 若SDK版本低于5.0.3.301,还需添加如下配置:-keep class com.huawei.updatesdk.**{*;}-keep class com.huawei.hms.**{*;}-ignorewarnings-keepattributes *Annotation*-keepattributes Exceptions-keepattributes InnerClasses-keepattributes Signature-keepattributes SourceFile,LineNumberTable# 若SDK版本低于5.0.3.301,还需添加如下配置:-keep class com.huawei.updatesdk.**{*;}-keep class com.huawei.hms.**{*;}
  3. 如果您使用了AndResGuard,需要在混淆配置文件中加入AndResGuard允许清单。

    "R.string.hms*",
    "R.string.connect_server_fail_prompt_toast",
    "R.string.getting_message_fail_prompt_toast",
    "R.string.no_available_network_prompt_toast",
    "R.string.third_app_*",
    "R.string.upsdk_*",
    "R.layout.hms*",
    "R.layout.upsdk_*",
    "R.drawable.upsdk*",
    "R.color.upsdk*",
    "R.dimen.upsdk*",
    "R.style.upsdk*", 
    "R.string.agc*"

5.添加权限

Account SDK需要获取网络状态权限和获取Wi-Fi状态权限。需要在Manifest文件中添加下面权限:

<!--chek network permissions-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--check wifi state-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

6.流程解析

6.1登录流程

img

整体流程:

  1. 用户选择华为帐号登录方式登录应用客户端。

  2. 应用客户端向华为帐号SDK发送请求,传递appid、scopes和redirect_uri参数,获取Authorization Code。

  3. 华为帐号SDK向华为帐号客户端发送请求,传递appid、scopes和redirect_uri参数,获取Authorization Code。

  4. 华为帐号客户端向华为帐号服务器发送请求,传递appid、scopes和redirect_uri参数,获取Authorization Code。

  5. 华为帐号客户端拉起华为帐号服务器的用户登录授权界面,界面上会根据登录请求中携带的授权域(scopes)信息, 显式告知用户需要授权的内容。

  6. 用户允许授权。

  7. 华为帐号服务器返回Authorization Code信息给华为帐号客户端。

  8. 华为帐号客户端返回Authorization Code信息给华为帐号SDK。

  9. 华为帐号SDK返回Authorization Code信息给应用客户端。

  10. 应用客户端将获取到的Authorization Code信息发给应用服务器。

  11. 应用服务器向华为帐号服务器发送请求,获取Access Token、Refresh Token、ID Token信息。

  12. 华为帐号服务器返回Access Token、Refresh Token、ID Token信息。

6.2静默登录

img

整体流程:

  1. 用户进行了触发静默登录的场景,根据应用实际场景由您自行设定。

  2. 应用客户端调用HuaweiIdAuthParamsHelper的默认构造方法配置鉴权参数。

  3. 华为帐号SDK向应用客户端返回包含授权参数的HuaweiIdAuthParams对象。

  4. 应用客户端调用HuaweiIdAuthManager.getService方法初始化HuaweiIdAuthService对象。

  5. 华为帐号SDK向应用客户端返回HuaweiIdAuthService对象。

  6. 应用客户端调用HuaweiIdAuthService.silentSignIn方法向华为帐号SDK发起静默登录请求。

  7. 华为帐号SDK检查用户是否符合静默登录的授权,并向应用客户端返回授权结果。

  8. 应用客户端根据授权结果自行确定后续处理。

6.3登出华为帐号

img

整体流程:

  1. 用户已经登录应用,在应用中执行登出操作。

  2. 应用客户端调用HuaweiIdAuthService.signOut方法向华为帐号SDK请求退出华为帐号。

  3. 华为帐号SDK清除华为帐号登录信息后,向应用客户端返回登出结果。

     

6.4华为账号取消授权

img

整体流程:

  1. 用户已经登录应用并授权,在应用中执行取消授权。

  2. 应用客户端调用HuaweiIdAuthService.cancelAuthorization方法向华为帐号SDK请求取消授权。

  3. 华为帐号SDK清理华为帐号授权信息后,向应用客户端返回取消结果。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一事无成只会写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值