Я страдал от анти-5-минутного быстрого запуска с API Google Диска, и все это в попытке обновить мое программное использование таблиц Google, чтобы оно соответствовало OAuth2 (да, я знаю, я был отстающим).
Сейчас я нахожусь в том месте, где я просто пытаюсь составить список электронных таблиц, которые у меня есть на Диске, и ничего не получаю — ни данных, ни ошибок. Драйв вроде доволен, а я нет.
Был бы очень признателен за любую помощь...
Вот подробности:
Да, у меня есть электронные таблицы (несколько) на моем Google Диске. Когда я вхожу в систему через веб-браузер, я вижу ссылки на них по адресу: https://spreadsheets.google.com/feeds/spreadsheets/private/full
Я создал учетные данные Google для установленного приложения. Код для программной загрузки Drive Doc (из «быстрого запуска» Google) работал нормально.
Следующий код работает нормально, но утверждает, что у меня нет электронных таблиц. Я в замешательстве, почему.
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.drive.DriveScopes;
import com.google.gdata.client.spreadsheet.SpreadsheetService;
import com.google.gdata.data.spreadsheet.SpreadsheetEntry;
import com.google.gdata.data.spreadsheet.SpreadsheetFeed;
public class Spread {
public static void main(String[] args) throws Exception {
ArrayList scopes = new ArrayList();
scopes.add(0, DriveScopes.DRIVE);
scopes.add(1, "https://spreadsheets.google.com/feeds");
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(new JacksonFactory())
.setServiceAccountId(
"[email protected]")
.setServiceAccountPrivateKeyFromP12File(new File("/path/to/my/P12/file"))
.setServiceAccountScopes(scopes).build();
credential.refreshToken();
SpreadsheetService service = new SpreadsheetService("tmp");
service.setOAuth2Credentials(credential);
// Define the URL to request. This should never change.
URL SPREADSHEET_FEED_URL = new URL(
"https://spreadsheets.google.com/feeds/spreadsheets/private/full");
// Make a request to the API and get all spreadsheets.
SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL,
SpreadsheetFeed.class);
List spreadsheets = feed.getEntries();
// Iterate through all of the spreadsheets returned
int i = 0;
for (SpreadsheetEntry spreadsheet : spreadsheets) {
++i;
System.out.println(spreadsheet.getId());
}
System.out.println("Done " + i);
}
}
Конечным результатом выполнения этого кода является «Готово, найдено 0 листов».
Помощь!
service account ID
stackoverflow.com/a/36861121/1589444 - person Ramratan Gupta   schedule 28.09.2017