确认authtoken是否为null,如果不存在则重定向到login

时间:2014-06-13 12:12:46

标签: android authentication oauth

我在我的家庭活动中有以下实现来检查是否存在authtoken,如果没有重定向到登录活动。它完成了工作,但存在问题......

方案

我是第一次启动应用程序(authtoken显然为null),confirmLogin方法(调用它总是被触发,找不到authtoken并显示登录信息......但是这样做有5-15秒的延迟这个用户在主页上再次返回登录页面。我怎样才能确定主页是否被查看为方法检查authtoken?

private void ConfirmLogin(String accountType, String authTokenType) {
    @SuppressWarnings("unused")
    final AccountManagerFuture<Bundle> future = mAccountManager.getAuthTokenByFeatures(accountType, authTokenType, null, this, null, null,
            new AccountManagerCallback<Bundle>() {
                @Override
                public void run(AccountManagerFuture<Bundle> future) {
                    Bundle bnd = null;
                    try {
                        bnd = future.getResult();
                        authToken = bnd.getString(AccountManager.KEY_AUTHTOKEN);

                        if (authToken != null) {
                            String accountName = bnd.getString(AccountManager.KEY_ACCOUNT_NAME);
                            mConnectedAccount = new Account(accountName, AccountGeneral.ACCOUNT_TYPE);

                        }
                        else{
                            Intent intent = new Intent(AppHome.this, AppLogin.class);
                            intent.putExtra(AppLogin.ARG_ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE);
                            intent.putExtra(AppLogin.ARG_AUTH_TYPE, AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS);
                            intent.putExtra(AppLogin.ARG_ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME);
                            startActivityForResult(intent, REQ_LOGIN);
                        }




                    } catch (Exception e) {
                        finish();
                        Log.e("Account Login terminated", e+"");                            
                    }
                }
            }
    , null);
}

0 个答案:

没有答案