Android getAuthToken返回null

时间:2011-06-08 17:54:30

标签: android google-app-engine authentication

我正在使用getAuthToken()获取令牌,然后登录Google App Engine应用程序。

它曾经工作,直到今天,我不知道为什么getAuthToken()正在返回null

我检查了传递给它的帐户,没关系。所以我无法想象发生了什么。

private class GetAuthTokenTask extends AsyncTask<Account, Object, String> {
        String TAG="GetAuthTokenTask";
        @Override
        protected String doInBackground(Account... accounts) {
            AccountManager manager = AccountManager.get(getApplicationContext());
            Account account = accounts[0];
            String token = this.buildToken(manager, account);
            manager.invalidateAuthToken(account.type, token);
            return this.buildToken(manager, account);
        }

        private String buildToken(AccountManager manager, Account account) {
            try {

                AccountManagerFuture<Bundle> future = manager.getAuthToken (account, "ah", false, null, null);
                Bundle bundle = future.getResult();
                System.out.println("Token: "+bundle.getString(AccountManager.KEY_AUTHTOKEN) +"\n");
                return bundle.getString(AccountManager.KEY_AUTHTOKEN);
             } catch (OperationCanceledException e) {
                    Log.w(TAG, e.getMessage());
             } catch (AuthenticatorException e) {
                    Log.w(TAG, e.getMessage());
             } catch (IOException e) {
                    Log.w(TAG, e.getMessage());
             }
             return null;
        }

        protected void onPostExecute(String authToken) {
            //Log.i("onPostExecute","GetCookieTask");
            new GetCookieTask().execute(authToken);    
        }
    }

修改

我自己找到了解决方案:

在getAuthToken()方法中,我将第三个参数更改为true,因此它会在状态栏中显示一条警告,要求获得权限。我不知道为什么Android之前没有问过,就像我安装应用程序之后一样。

2 个答案:

答案 0 :(得分:1)

getAuthToken(Account, String, boolean, AccountManagerCallback<Bundle>, Handler)方法已弃用

改为使用getAuthToken(Account, String, Bundle, Activity, AccountManagerCallback<Bundle>, Handler)getAuthToken(Account, String, Bundle, boolean, AccountManagerCallback<Bundle>, Handler)

第一个适合我。

Android Documentation

答案 1 :(得分:0)

从问题编辑中复制:

我自己找到了解决方案:

在getAuthToken()方法中,我将第三个参数更改为true,因此它会在状态栏中显示一条警告,要求获得权限。我不知道为什么Android之前没有问过,就像我安装应用程序之后一样。