Облачный Неаторизованный запрос

#java #android #cloudant

#java #Android #облачный

Вопрос:

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

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, но это самый близкий, который я получил.

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

Комментарии:

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

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

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

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

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

Ответ №1:

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

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

Ответ №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-