Невозможно получить папку по идентификатору с помощью Boxr gem Ruby SDK для Box API - PullRequest
0 голосов
/ 04 октября 2018

В настоящее время я работаю над приложением Rails 5.2, где я использую сервис форм FormStack.Formstack использует Box для хранения сервисов.Я начал использовать Boxr gem для взаимодействия с 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 Ответ

0 голосов
/ 04 октября 2018

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

...