3

我正在集成华为帐户套件。我想知道是否可以使用以下代码通过authAccount获取AccessToken:

private void silentSignIn() {
        Task<AuthAccount> task = mAuthManager.silentSignIn();
        task.addOnSuccessListener(new OnSuccessListener<AuthAccount>() {
            @Override
            public void onSuccess(AuthAccount authAccount) {

                Log.i(TAG, "silentSignIn success");
                Log.i(TAG, "touxiang: "+authAccount.getAvatarUriString());
            }
        });
        task.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(Exception e) {
                //if Failed use getSignInIntent
                if (e instanceof ApiException) {
                    ApiException apiException = (ApiException) e;
                    signIn();
                }
            }
        });
    }

任何人都可以提供任何线索吗?

4

1 回答 1

1

您可以通过静默登录获得用户级别的AccessToken。

  1. 首先你需要检查mAuthManager对象是如何初始化的:

    在此处输入图像描述

  2. 只有满足以下mAuthManager条件时才能初始化对象:

//Call the default constructor of HuaweiIdAuthParamsHelper to set authorization parameters.
AccountAuthParams silentSignInParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
        .setAccessToken()
        .createParams();
//Call the getService method of HuaweiIdAuthManager to initialize the HuaweiIdAuthService object.
AccountAuthService mAuthManager = AccountAuthManager.getService(getApplicationContext(), silentSignInParams);
//Call the HuaweiIdAuthService.silentSignIn method to send a silent sign-in request.
Task<AuthAccount> task = mAuthManager.silentSignIn();

初始化AccountAuthParams对象时需要该对象。mAuthManager创建此对象时,您必须设置.setAccessToken()方法以使用该方法获取用户级访问令牌authHuaweiId.getAccessToken()

  1. 你可以检查你是否设置了.setAccessToken()方法。
于 2021-10-28T11:27:19.150 回答