2012-08-22 89 views
0

我使用OAuth和YouTube進行身份驗證問題。驗證令牌 的檢索正常,但gdata.youtube.com聲稱驗證密鑰無效。我使用invalidateAuthToken重新生成了 密鑰,所以密鑰沒有過期。使用OAuth和AccountManager進行身份驗證

我錯過了什麼?

選擇帳戶

Intent intent = accountManager.getAccountManager().newChooseAccountIntent(
    null, 
    null, 
    new String[]{"com.google"}, 
    true, 
    null, 
    AUTH_TOKEN_TYPE, 
    new String[] {"text"}, 
    null); 

startActivityForResult(intent, REQUEST_AUTHENTICATE); 

的身份驗證令牌的檢索。

Bundle options = new Bundle(); 
options.putString("client_id", "67674xxxxxx.apps.googleusercontent.com"); 

accountManager.getAccountManager().getAuthToken(
    account, 
    AUTH_TOKEN_TYPE, 
    options, 
    (Activity)context, 
    accountManagerCallback, 
    null); 

Http請求

URL feedUrl = new URL(build_query(action, arguments)); 

final HttpGet httpGet = new HttpGet(feedUrl.toURI()); 
HttpParams httpParameters = new BasicHttpParams();  
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); 
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 

final DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters); 

inputStream = timedCall(new Callable<InputStream>() { 
    @Override 
    public InputStream call() throws Exception { 
      httpGet.addHeader("Authorization", "Bearer " + authAccount.getActiveAccountAuthToken()); 
      httpGet.addHeader("X-GData-Key", "key="); 

      HttpResponse response = httpClient.execute(httpGet); 
      int responseCode = response.getStatusLine().getStatusCode(); 

      if(responseCode == 401) { 
       response.getEntity().consumeContent(); 
       throw new AuthAccountException(responseCode); 
      } 
      return response.getEntity().getContent(); 
     }  
    }, 
    15, TimeUnit.SECONDS); 

回答

相關問題