华为帐号服务(HUAWEI Account Kit)为您提供了简单、安全的登录授权功能,方便用户快捷登录。用户不必输入帐号、密码和繁琐验证,就可以通过“华为帐号登录”快速登录,即刻使用您的App。
接入方便,规范统一
服务手机、平板、智慧屏等全场景生态,接入规范统一,方便您接入华为生态。
海量用户,全球化服务
服务全球190+国家和地区,支持70+种语言,服务9亿+用户。
安全可靠,遵循国际标准
遵循OAuth 2.0和OpenID Connect等国际标准协议,遵循GDPR隐私规范,具备高安全性密码验证和手机号验证双因素认证能力,风险实时通知。
1.2.1 快捷登录应用
终端用户可以使用华为帐号登录应用,首次登录应用需要用户授权确认,后续即可一键登录。且帐号实现全场景生态,一个帐号即可登录所有应用。
您需要按照流程来完成应用的开发工作,完整的开发流程如下图所示。
如果您已有集成第三方移动服务的应用程序,可以使用HMS Toolkit提供的Convertor工具将第三方移动服务相关的API接口自动转换为HMS Core相对应的API接口,实现快速转换和集成HMS Core的能力。
在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法请参见帐号注册认证。
参见创建项目和在项目下添加应用完成应用的创建。
项目是您在AGC中资源的组织实体,您可以将您的一个应用的不同平台版本添加到同一个项目中。在创建您的应用前,您需要先在AGC中创建您的项目。
此时该项目中还没有应用,您下一步需要在该项目中添加应用。
AGC服务主要在应用开发过程中提供各种开发能力,如果您还没有在您的AGC项目中添加应用,请先完成应用的添加。您可以直接添加一个新应用,也可以添加一个未归属任何项目的已有应用。
在 AppGallery Connect 网站首页选择“我的项目”。
在项目列表中点击您的项目。
在项目设置页面中点击“添加应用”。
如果项目中已经存在应用,需要添加新的应用,展开页面顶部的应用选择区域,选择“添加应用”。
在“添加应用”页面填写应用信息。
参数 | 说明 |
---|---|
选择平台 | 选择Android。 |
支持设备 | 应用发布后运行的设备类型。 |
应用名称 | 如果添加一个新应用,请填写新创建的应用名称,要求1-64个字符,创建后将获取一个新的APP ID,应用名称支持在应用信息中修改。如果添加一个已经创建的应用,可以点击应用名称文本框,在展开的应用列表中选择应用。应用的其他参数将自动关联该应用的信息。说明:应用名不能含有“黄赌毒”等低俗敏感字样。 |
应用包名 | 最终要上架华为应用市场的应用包名。 |
应用分类 | ● 应用:普通应用。● 游戏:游戏类应用。 |
默认语言 | 应用的默认语言,根据实际情况选择。 |
5. 点击“确定”。
签名证书指纹用于校验应用的真实性,您需要根据签名证书在本地生成签名证书指纹,并在应用上架前将签名证书指纹配置到AppGallery Connect。
在申请前需要满足以下两个条件:
已创建应用程序的签名证书,签名证书创建请参见生成签名证书。
当前PC已经安装JDK。
操作步骤如下:
先利用androidStudio自动生成密钥库
利用androidStudio自动生成密钥库
直接下一步
填写对应信息
至此自动生成完毕 在将该密钥库更改成国家标准,具体操作如下
Windows
登录AppGallery Connect网站,点击“我的项目”。
在项目列表中找到您的项目,在项目中点击需要配置签名证书指纹的应用。
在“项目设置 > 常规”页面的“应用”区域,点击“SHA256证书指纹”后的图标,输入生成的SHA256指纹。
配置完成后点击。
配置完成之后 通过华为手机联调既可以实现华为账号进行登录
针对Android Studio开发环境,华为提供了Maven仓集成方式的HMS Core SDK包。在开始开发前,您需要将HMS Core SDK集成到您的Android Studio开发环境中。
如果在AppGallery Connect中开通了相关服务则需要将“agconnect-services.json”文件添加到您的App中。
登录AppGallery Connect网站,点击“我的项目”。
在项目列表中找到您的项目,在项目中点击需要集成HMS Core SDK的应用。
在“项目设置 > 常规”页面的“应用”区域,点击“agconnect-services.json”下载配置文件。
将“agconnect-services.json”文件拷贝到应用级根目录下。
打开Android Studio项目级“build.gradle”文件。
添加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仓地址配置在最后。
打开应用级的“build.gradle”文件。
在“dependencies”中添加如下编译依赖。
dependencies {
implementation 'com.huawei.hms:hwid:{version}'
}
说明
hwid为华为帐号服务,{version}替换为实际的SDK版本号,版本号索引请参见版本更新说明。例如:implementation 'com.huawei.hms:hwid:5.0.3.302'。
在文件头apply plugin: 'com.android.application'下一行添加如下配置。
apply plugin: 'com.huawei.agconnect'
如果您的应用不需要设置只支持某些特定语言,则请忽略本步骤。应用将默认支持所有HMS Core SDK支持的语言。
如果您的应用需要设置只支持某些特定语言,则可通过本步骤配置。
打开应用级的
“build.gradle”
文件。
在“android > defaultConfig”
中新增
“resConfigs”
,配置需要支持的语种,配置格式如下:
android {
defaultConfig { ...
resConfigs "en", "zh-rCN", "需要支持的其他语言"
}
}
HMS Core SDK支持的语言列表请参见HMS Core SDK支持的语言。
在完成以上的配置后,点击工具栏中的gradle同步图标,完成“build.gradle”文件的同步,将相关依赖下载到本地。
说明
如果出现错误,请检查网络连接是否正常,以及检查“build.gradle”文件是否正确。
如果您的应用上架到Google Play,当用户手机上没有安装HMS Core(APK)或者版本过低时,调用API会返回错误。
如果您的应用不需要上架到Google Play,需要在
“AndroidManifest.xml”
的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();
}
}
}
});
您编译APK前需要配置混淆配置文件,避免混淆HMS Core SDK导致功能异常。
Android Studio开发环境里的混淆配置文件是“proguard-rules.pro”。
在应用级根目录下打开混淆配置文件“proguard-rules.pro”。
加入排除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.**{*;}
如果您使用了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*"
Account SDK需要获取网络状态权限和获取Wi-Fi状态权限。需要在Manifest文件中添加下面权限:
整体流程:
用户选择华为帐号登录方式登录应用客户端。
应用客户端向华为帐号SDK发送请求,传递appid、scopes和redirect_uri参数,获取Authorization Code。
华为帐号SDK向华为帐号客户端发送请求,传递appid、scopes和redirect_uri参数,获取Authorization Code。
华为帐号客户端向华为帐号服务器发送请求,传递appid、scopes和redirect_uri参数,获取Authorization Code。
华为帐号客户端拉起华为帐号服务器的用户登录授权界面,界面上会根据登录请求中携带的授权域(scopes)信息, 显式告知用户需要授权的内容。
用户允许授权。
华为帐号服务器返回Authorization Code信息给华为帐号客户端。
华为帐号客户端返回Authorization Code信息给华为帐号SDK。
华为帐号SDK返回Authorization Code信息给应用客户端。
应用客户端将获取到的Authorization Code信息发给应用服务器。
应用服务器向华为帐号服务器发送请求,获取Access Token、Refresh Token、ID Token信息。
华为帐号服务器返回Access Token、Refresh Token、ID Token信息。
整体流程:
用户进行了触发静默登录的场景,根据应用实际场景由您自行设定。
应用客户端调用HuaweiIdAuthParamsHelper的默认构造方法配置鉴权参数。
华为帐号SDK向应用客户端返回包含授权参数的HuaweiIdAuthParams对象。
应用客户端调用HuaweiIdAuthManager.getService方法初始化HuaweiIdAuthService对象。
华为帐号SDK向应用客户端返回HuaweiIdAuthService对象。
应用客户端调用HuaweiIdAuthService.silentSignIn方法向华为帐号SDK发起静默登录请求。
华为帐号SDK检查用户是否符合静默登录的授权,并向应用客户端返回授权结果。
应用客户端根据授权结果自行确定后续处理。
整体流程:
用户已经登录应用,在应用中执行登出操作。
应用客户端调用HuaweiIdAuthService.signOut方法向华为帐号SDK请求退出华为帐号。
华为帐号SDK清除华为帐号登录信息后,向应用客户端返回登出结果。
整体流程:
用户已经登录应用并授权,在应用中执行取消授权。
应用客户端调用HuaweiIdAuthService.cancelAuthorization方法向华为帐号SDK请求取消授权。
华为帐号SDK清理华为帐号授权信息后,向应用客户端返回取消结果。