Как загрузить данные с ПК в FireStore. Получение "Не удалось определить, работаем ли мы на Google Compute Engine". - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь загрузить пару файлов xml в firestore с моего компьютера (1000 или около того).Пользователи в моем приложении для Android должны иметь возможность искать эти файлы, и, поскольку хранилище Firebase не предоставляет эту функцию, я подумал, что просто дам их в firestore.

Чтобы проверить это, я пытаюсьзагрузить 10 файлов для начала.Код, который у меня есть, выглядит примерно так:

fun main(){
    val db = getDatabase()
    getXMLFiles().take(10).forEach { file ->
        db.collection("xml").add(XMLFile(file.name, file))
    }
}

private fun getDatabase() : Firestore {
    val serviceAccount = FileInputStream("<project name>-firebase-adminsdk-<some other stuff>.json")

    val firestoreOptions = FirestoreOptions.newBuilder()
        .setTimestampsInSnapshotsEnabled(true).build()

    val options = FirebaseOptions.Builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .setDatabaseUrl("https://<project name>.firebaseio.com")
        .setFirestoreOptions(firestoreOptions)
        .build()

    FirebaseApp.initializeApp(options)

    return FirestoreClient.getFirestore()
}

fun getXMLFiles() = File("/XML").walk().asIterable()

data class XMLFile(val name: String, val file: File)

Ничего не загружается, и половину времени (странно непоследовательно) я получаю это сообщение об ошибке:

Apr 15, 2019 2:05:53 PM com.google.auth.oauth2.ComputeEngineCredentials runningOnComputeEngine
WARNING: Failed to detect whether we are running on Google Compute Engine.
java.net.ConnectException: No route to host (connect failed)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    at java.base/java.net.Socket.connect(Socket.java:591)
    at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
    at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
    at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:104)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
    at com.google.auth.oauth2.ComputeEngineCredentials.runningOnComputeEngine(ComputeEngineCredentials.java:210)
    at com.google.auth.oauth2.DefaultCredentialsProvider.tryGetComputeCredentials(DefaultCredentialsProvider.java:290)
    at com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentialsUnsynchronized(DefaultCredentialsProvider.java:207)
    at com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentials(DefaultCredentialsProvider.java:124)
    at com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(GoogleCredentials.java:127)
    at com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(GoogleCredentials.java:100)
    at com.google.cloud.ServiceOptions.defaultCredentials(ServiceOptions.java:304)
    at com.google.cloud.ServiceOptions.<init>(ServiceOptions.java:278)
    at com.google.cloud.firestore.FirestoreOptions.<init>(FirestoreOptions.java:225)
    at com.google.cloud.firestore.FirestoreOptions$Builder.build(FirestoreOptions.java:219)
    at UploaderKt.getDatabase(Uploader.kt:32)
    at UploaderKt.main(Uploader.kt:13)
    at UploaderKt.main(Uploader.kt)

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Process finished with exit code 0

Я проверил, и он делаетнайдите .json с учетными данными, так что это не проблема.Я ничего не могу найти в сообщении об ошибке

Apr 15, 2019 2:05:53 PM com.google.auth.oauth2.ComputeEngineCredentials runningOnComputeEngine
WARNING: Failed to detect whether we are running on Google Compute Engine.

Так что я надеялся, что кто-то может помочь.

Кстати, не слишком много показывая, мой .json выглядит так:

{
  "type": "service_account",
  "project_id": "XXX",
  "private_key_id": "XXX",
  "private_key": "-----BEGIN PRIVATE KEY-----XXX-----END PRIVATE KEY-----\n",
  "client_email": "firebase-adminsdk-XXX@XXX.iam.gserviceaccount.com",
  "client_id": "XXX",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-XXX%40XXX.iam.gserviceaccount.com"
}

Редактировать: возможно, излагаю очевидное, но у меня нет проблем с подключением к Интернету, в противном случае

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...