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);