可以通过使用异步方法来解决此问题,以避免阻塞主线程。例如,以下代码段显示了如何使用异步方式检索缓存中的令牌:
//创建实例的代码
PublicClientApplication pca = new PublicClientApplication(getApplicationContext(),
R.raw.auth_config);
//异步检索访问令牌的示例代码片段
pca.acquireTokenSilentAsync(SCOPES, pca.getConfiguration().getDefaultAuthority(),
getUserFromStorage(), new SilentAuthenticationCallback() {
@Override
public void onSuccess(AuthenticationResult authenticationResult) {
Log.d(TAG, "Successfully retrieved access token from cache.");
}
@Override
public void onError(MsalException exception) {
Log.d(TAG, "Error retrieving access token from cache: " + exception.getMessage());
}
});
这个例子中使用了acquireTokenSilentAsync
方法,该方法异步检索缓存中的访问令牌。 您还可以传递一个SilentAuthenticationCallback
实例以便在检索令牌时处理成功或错误的情况。 通过使用异步方法,您的应用程序可以在检索单个令牌期间执行其他操作,而不必等待该操作完成。