Невозможно получить папку по идентификатору с помощью Boxr gem Ruby SDK для Box API

В настоящее время я работаю над приложением Rails 5.2, где я использую сервис форм FormStack. Formstack использует Box для хранения сервисов. Я начал использовать гем Boxr для взаимодействия с Box API.

Чтобы создать client вам понадобится токен разработчика.

client = Boxr::Client.new('{BOX_DEVELOPER_TOKEN}')Тем не менее, это BOX_DEVELOPER_TOKEN истекает каждые 60 минут. Поэтому я решил использовать JWT для аутентификации.

Так что я генерирую token следующим образом:

token = Boxr::get_enterprise_token(private_key: ENV.fetch('JWT_PRIVATE_KEY'), private_key_password: ENV.fetch('JWT_PRIVATE_KEY_PASSWORD'), public_key_id: ENV.fetch('JWT_PUBLIC_KEY_ID'), enterprise_id: ENV.fetch('BOX_ENTERPRISE_ID'), client_id: ENV.fetch('BOX_CLIENT_ID'), client_secret: ENV.fetch('BOX_CLIENT_SECRET'))

Это то, что я потом передаю для генерации клиента:

client = Boxr::Client.new(token)

Это создает клиента:

#<Boxr::Client:0x000055fd60abb7e8
 @access_token={"access_token"=>"xxxxxxxxxxxxxxxx", "expires_in"=>3782, "restricted_to"=>[], "token_type"=>"bearer"},
 @as_user_id=nil,
 @client_id="xxxxxxxxxxxxxxx",
 @client_secret="xxxxxxxxxxxx",
 @enterprise_id="xxxxxxxxxxxxx",
 @identifier=nil,
 @jwt_private_key=
  "-----BEGIN ENCRYPTED PRIVATE KEY-----xxxxxxxxxxxxxx",
 @jwt_private_key_password="xxxxxxxxxxxxxxx",
 @jwt_public_key_id="xxxxxxxxxxxxxx",
 @refresh_token=nil,
 @token_refresh_listener=nil>

Тем не менее, когда я пытаюсь получить папку по идентификатору, я получаю сообщение об ошибке, которое я не получил, когда я передал BOX_DEVELOPER_TOKEN создать клиента.

folder = client.folder_from_id("12345678")

Boxr::BoxrError: 404: Not Found
from /usr/local/bundle/gems/boxr-1.4.0/lib/boxr/client.rb:239:in `check_response_status'

В настройках предприятия я дал доступ к приложению, предоставив API TOKEN. Я не уверен, почему я не могу получить папку. Когда я иду к идентификатору папки, папка там и в консоли разработчика, у меня есть доступ администратора. Любая помощь?

1 ответ

Поведение, которое вы видите, связано с тем, что ваш токен разработчика аутентифицирует вызывающего пользователя как вашу личную учетную запись пользователя, но при использовании аутентификации JWT вызовы API выполняются как специальная учетная запись службы, которая представляет само приложение. Эти учетные записи по умолчанию не имеют доступа к одному и тому же контенту; любые папки, которыми вы хотите делиться между ними, должны либо явно сотрудничать, либо учетной записи службы должно быть разрешено олицетворять учетную запись пользователя, которому принадлежит папка. Вы можете прочитать больше об этой теме на https://developer.box.com/v2.0/docs/service-account

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