静默登录成功后可以使用authAccount.getAccessToken()方法获取AccessToken吗

Can the AccessToken Be Obtained by Using the authAccount.getAccessToken() Method After the Silent Login Is Successful

我正在集成华为帐号套件。我想知道是否可以使用下面的代码通过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();
                }
            }
        });
    }

谁能给点线索?

静默登录可以获得用户级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();

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

  1. 您可以检查是否设置了.setAccessToken()方法。