2011-06-08 166 views
2

我使用getAuthToken()獲取令牌,然後在Google App Engine應用程序中登錄。Android getAuthToken返回null

它曾經工作,直到今天,我不知道爲什麼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之前沒有問過,就像我安裝應用程序之後一樣。

+5

你應該添加你的評論作爲你自己的問題的答案,而不是編輯! – 2011-06-09 01:56:36

回答

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

0

從問題編輯複製:

我找到了解決自己:

在getAuthToken()方法,我改變了第三個參數爲true,因此它會顯示一個警告狀態欄要求許可。我不知道爲什麼Android之前沒有問過,就像我安裝應用程序之後一樣。