HMS——AccountKit

AccountKit

目标

使用AccountKit提供的服务,获取华为账户的基本信息

步骤

  1. 在华为AppGallery中创建项目和应用,安装HMS Tookit
  2. 在Android本地创建与AppGallery中对应的应用程序,并签名,使用HMSToolkit集成AccountKit
  3. 设置布局界面,创建三个按钮:华为账户认证,登出,取消授权
  4. 编写授权事件代码,完成功能验证

实现

1. 创建项目和应用,开启AccountKit权限

创建项目

华为的AppGallery是应用程序的橱窗,需要在华为应用市场上上架应用,必须在其上创建项目和应用。上架应用的包名需要和AppGallery中申明的包名一致。
在这里插入图片描述

创建应用

在这里插入图片描述

安装HMS Tookit

在这里插入图片描述

2. 在Android本地创建与AppGallery中对应的应用程序,并签名

在这里插入图片描述

签名

点击菜单Build->Generate Signed Bundle/APK,在打开的对话框中选择apk。在Generate Signed Bundle or APK对话框中选择Create New…创建新的app key file。请记住你创建的签名文件的位置和名字。后面的配置需要是应用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用HMSToolkit集成AccountKit

HMSToolKit为开发者提供了快速继承各种HMS Kit的途径。选择HMS->Configuration Wizard。这时会弹出一个授权页面,因为HMSKit需要获取开发者在AppGallery中所创建的项目和应用的信息,因此需要输入华为开发者账户的用户名和密码,完成登录授权。授权完成后关闭网页。这时就可以看到Configuration Wizard的窗口,如下图所示。点击Add Kit 继承AccountKit项目中。
在这里插入图片描述
选择签名文件, 输入密码,密钥别名,密钥密码,然后点击Generate,生成项目签名。点击下一步,就可以看到集成完成了。
在这里插入图片描述
在这里插入图片描述

3.设置布局界面,创建三个按钮:华为账户认证,登出,取消授权

布局和事件代码

在Activity的布局文件中创建布局,使用华为账户按钮,提示用使用华为认证授权登录。为他们添加事件代码
在这里插入图片描述
布局文件:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_margin="10dp"
    tools:context=".MainActivity">
    <com.huawei.hms.support.hwid.ui.HuaweiIdAuthButton
        android:id="@+id/btnHuaweiIdAuthButton"
        android:layout_width="match_parent"
        android:layout_margin="10dp"
        android:layout_height="wrap_content"></com.huawei.hms.support.hwid.ui.HuaweiIdAuthButton>
    <Button
        android:id="@+id/btnSingOut"
        android:text="登出"
        android:layout_width="match_parent"
        android:layout_margin="10dp"
        android:layout_height="wrap_content"></Button>
    <Button
        android:id="@+id/btnUnAuth"
        android:layout_margin="10dp"
        android:text="取消授权"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></Button>
</LinearLayout>
package com.hnevc.myaccountdemo;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

import com.huawei.hms.support.hwid.ui.HuaweiIdAuthButton;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private HuaweiIdAuthButton btnHuaweiIdAuthButton;
    private Button btnSingOut;
    private Button btnUnAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        btnHuaweiIdAuthButton = (HuaweiIdAuthButton) findViewById(R.id.btnHuaweiIdAuthButton);
        btnSingOut = (Button) findViewById(R.id.btnSingOut);
        btnUnAuth = (Button) findViewById(R.id.btnUnAuth);

        btnHuaweiIdAuthButton.setOnClickListener(this);
        btnSingOut.setOnClickListener(this);
        btnUnAuth.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnHuaweiIdAuthButton:

                break;
            case R.id.btnSingOut:

                break;
            case R.id.btnUnAuth:

                break;
        }
    }
}

认证

认证主要使用HuaweiIdAuthService类的getSignInIntent()方法调起授权界面。其中AccountService类的对象,需要通过HuaweiIdAuthManager来创建,在创建过程中需要HuaweiIdAuthParams对象来设置认证的参数信息。而HuaweiIdAuthParams可以通过HuaweiIdAuthParamsHelper来构建。

HuaweiIdAuthParams params
        = new HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
        .createParams();
HuaweiIdAuthService service = HuaweiIdAuthManager.getService(this, params);
Intent signInIntent = service.getSignInIntent();
startActivityForResult(signInIntent, 8888);

在回调方法中可以获取华为账户的信息。使用HuaweiIdAuthManager解析返回的数据为Task类型对象,然后通过getResult()方法获取华为账户信息,通过getXxx()获取账户的具体信息,比如名字,头像等。

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 8888){
        Task<AuthHuaweiId> authHuaweiIdTask = HuaweiIdAuthManager.parseAuthResultFromIntent(data);
        AuthHuaweiId result = authHuaweiIdTask.getResult();
        Log.e("TAG", "onActivityResult: "+result.getDisplayName() );
        Log.e("TAG", "onActivityResult: "+result.getAvatarUriString() );
        Log.e("TAG", "onActivityResult: "+result.getOpenId() );
    }
}

在用户授权后可以在日志信息中看到输入的账户信息
在这里插入图片描述
以上的代码可以通过AccountKit中Codeing Assistant中找到样例

登出

登出调用HuaweiIdAuthService的signOut方法即可,把service提升为成员变量,然后调用signOut方法完成。

service.signOut();

取消授权

取消授权调用service.cancelAuthorization();即可

service.cancelAuthorization();

小结

主要使用HuaweiIdAuthService,HuaweiIdAuthManager,HuaweiIdAuthParamsHelper,HuaweiIdAuthParams四个类完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值