Как вызвать REST API Google Диска с Джерси?

Я пытаюсь использовать Java Jersey вместо клиентских библиотек Google для доступа к Google File API, но мне постоянно возвращается статус ответа «401 Unauthorized». Перед вызовом вызова я получил токен доступа от Google с помощью Oauth:

public static String getGoogleFileResource(final String fileId,
        final String accessToken) {
    //projection

    ClientConfig cc = new DefaultClientConfig();
    cc.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, true);
    Client client = Client.create(cc);

    String url = String
            .format("https://www.googleapis.com/drive/v2/files/%s?fields=downloadUrl&key=%s",
                    fileId, GoogleClientConstants.GOOGLE_api_key);
    WebResource webResource = client.resource(url);

    String response = webResource
            .accept(MediaType.APPLICATION_JSON_TYPE,
                    MediaType.APPLICATION_XML_TYPE)
            .header("Authorization", "Bearer " + accessToken)
            .get(String.class);

    logger.info("Authorization - " + "Bearer " + accessToken);
    logger.info(" reponse " + response);
    return response;
}

Что я делаю неправильно ?


person user193116    schedule 06.03.2013    source источник


Ответы (1)


Оказывается, вам нужно добавить свой токен доступа в заголовок HTTP-запроса.

В руководстве разработчика Google: «загрузка файла»

https://developers.google.com/drive/manage-uploads

Вам нужно отправить такой почтовый запрос:

POST /upload/drive/v2/files?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/jpeg
Content-Length: number_of_bytes_in_JPEG_file
Authorization: your_auth_token

JPEG data

обратите внимание, что в шапке нужно указать your_auth_token

person bolei    schedule 06.08.2013