#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.