Откройте таблицу Google с помощью.net
Я работаю над инструментом для доступа к электронной таблице Google через.net. Он работал со старым способом аутентификации, пока Google не закрыл их. Теперь я переделал работу с OAuth2 и сгенерировал действительный токен доступа.
Проблема: даже с токеном доступа я получаю Bad Request 400, как только я пытаюсь получить электронную таблицу.
Вот код, как я настраиваю сервис и строю запрос:
var documentService = new DocumentsService("documents");
var requestFactory = new GDataRequestFactory(null);
requestFactory.CustomHeaders.Add("Authorization: Bearer " + accessToken);
documentService.RequestFactory = requestFactory;
var query = new SpreadsheetQuery { Title = name };
var feed = documentService.Query(uri);
Я также попытался использовать SpreadsheetsService и добавить токен доступа непосредственно в запрос. Тогда Uri запроса выглядит так:
https://docs.google.com/feeds/default/private/full?category=spreadsheet&title={speadsheetName}&access_token={access_token}
В любом случае я продолжаю получать ответ "Плохой запрос 400". Может ли кто-нибудь помочь мне выяснить, что здесь не так?
Спасибо!
РЕДАКТИРОВАТЬ: Поскольку код для доступа к электронной таблице не изменился при обновлении до OAuth2 и токен доступа действителен, я думаю, что в проекте пользователя / разработчика службы отсутствует какое-либо разрешение или что-то в этом роде. Но не знаю, где это исправить.
РЕДАКТИРОВАТЬ-2: Я понял, что токен доступа хорошо работает с новыми URL-адресами API, но не работает со старыми вызовами API. К сожалению, я не могу использовать новый Google SDK в своей среде, так как я ограничен.NET 3.5 или ниже. Может быть, есть опция, позволяющая пользователю службы использовать старые вызовы API или что-то в этом роде?
1 ответ
Я нашел решение для моей проблемы:
DocumentsService
шов не работать (больше), по крайней мере, для меня. С использованием SpreadsheetsService
вместо этого и убедитесь, что используете SpreadsheetsService.SpreadsheetQuery
вместо DocumentsService.SpreadsheetService
решает проблему. 2-й был хорошо спрятан в моем случае.