Cloudant Несанкционированный запрос

Я пытался решить эту проблему с доступом к моей облачной базе данных из сервисов IBM-bluemix. Я установил свой URL-адрес в студии Android следующим образом:

URL url = new URL("https://XXXX-XXXX-XXXX-XXXX-XXXX-bluemix.cloudant.com");

А затем попытаться получить к нему доступ:

CloudantClient client =  ClientBuilder.url(url)
                .username("myusername")
                .password("mypassword")
                .build();

Однако, когда я пытаюсь получить доступ/изменить что-либо в своей базе данных, бывший:

client.createDB("test_DB");

Я получаю сообщение об ошибке:

Error: unauthorized. Reason: one of _admin, server_admin is required for this request.

Что мне не хватает? Я видел много разных подходов к запросам из cloudant, но это самый близкий из тех, что я нашел.

Я только что совершенно неправильно понял, как работает запрос из существующей базы данных?

Если у вас есть существующая база данных, вы наверняка не будете использовать метод createDB().

OneCricketeer 22.04.2019 21:25

Я имею в виду, что что бы я ни делал, даже пытаясь перечислить все существующие базы данных, я все равно получаю ту же ошибку. Я установил все разрешения на панели инструментов Cloudant, но безрезультатно

Boyfinn 22.04.2019 21:30

Хм. Не использовал Cloudant, поэтому не знаю, что вам здесь сказать.

OneCricketeer 22.04.2019 21:34

Похоже, у вашего имени пользователя нет необходимых прав для создания БД в Cloudant. Является ли этот пользователь пользователем только для чтения? В этом случае вам может потребоваться обновить разрешения в веб-консоли IBM bluemix.

ChocolateAndCheese 22.04.2019 23:22

Я прошел всех пользователей, даже добавил новые разрешения и включил все разрешения на несанкционированные подключения. Ничего не работает.

Boyfinn 23.04.2019 08:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
536
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте свои учетные данные, используя curl в командной строке (см. https://cloud.ibm.com/docs/services/Cloudant/tutorials?topic=cloudant-databases#databases)

Убедитесь, что ваша учетная запись принимает устаревшие учетные данные («имя пользователя и пароль») или токены IAM.

См. https://cloud.ibm.com/docs/services/Cloudant/guides?topic=cloudant-ibm-cloud-identity-and-access-management-iam-#ibm-cloud-identity-and-access-management-iam -

Ответ принят как подходящий

Если вы используете устаревший ключ API Cloudant, вы не сможете выполнять действия на уровне администратора учетной записи, такие как перечисление или создание баз данных, поскольку устаревшие ключи API связаны с конкретными базами данных, а не с учетной записью. Если это тот тип учетных данных, который вы используете, вы можете инициализировать клиент так, как вы это сделали, и получить существующую базу данных через:

Database db = client.database("test_DB", false);

Другие вопросы по теме