0

OAuthとYouTubeを使用した認証に問題があります。認証トークンの取得は正常に行われますが、gdata.youtube.comは認証キーが無効であると主張しています。invalidateAuthTokenを使用してキーを再生成したので、キーの有効期限が切れていません。

私は何を逃していますか?

アカウントを選択

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

1 に答える 1

0

間違ったスコープを使用していました。アクセス トークンを受け取る代わりに、クライアント ログイン トークンを受け取りました。OAuth 2.0 の正しいスコープはhttps://gdata.youtube.comです

于 2012-08-23T11:34:29.643 に答える