Jwt 无法使用Boxr gem Ruby SDK for Box API按id获取文件夹

Jwt 无法使用Boxr gem Ruby SDK for Box API按id获取文件夹,jwt,box,boxapiv2,ruby-box,Jwt,Box,Boxapiv2,Ruby Box,我目前正在使用FormStack表单服务的Rails 5.2应用程序上工作。Formstack利用Box存储服务。我开始使用gem与Box API交互 要创建客户端,您需要一个开发者令牌 client=Boxr::client.new({BOX\u DEVELOPER\u TOKEN}') 但是,此BOX\u DEVELOPER\u令牌每60分钟过期一次。所以我决定使用JWT进行身份验证 因此,我通过以下方式生成令牌: token = Boxr::get_enterprise_token(pri

我目前正在使用FormStack表单服务的Rails 5.2应用程序上工作。Formstack利用Box存储服务。我开始使用gem与Box API交互

要创建
客户端
,您需要一个开发者令牌

client=Boxr::client.new({BOX\u DEVELOPER\u TOKEN}')
但是,此
BOX\u DEVELOPER\u令牌每60分钟过期一次。所以我决定使用JWT进行身份验证

因此,我通过以下方式生成
令牌

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>
这将创建客户端:

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>

在企业设置中,我通过提供API令牌来访问应用程序。我不知道为什么我拿不到这个文件夹。当我转到文件夹ID时,文件夹就在那里,在开发人员控制台中,我有管理员权限。有什么帮助吗?

您看到的行为是由于您的开发者令牌将调用者身份验证为您自己的个人用户帐户,但在使用JWT身份验证时,API调用作为代表应用程序本身的特殊服务帐户进行的。默认情况下,这些帐户无权访问相同的内容;您希望在他们之间共享的任何文件夹必须明确协作,或者必须允许服务帐户模拟拥有该文件夹的用户帐户。您可以在

I enabled
Perform Actions as Users
通过控制台在配置上生成用户访问令牌
上了解有关此主题的更多信息。但是我仍然得到
Boxr::BoxrError:404:notfound
这是否意味着我仍然需要创建一个用户
client.create_user()
并从该用户请求文件夹?如果启用了
生成用户访问令牌
,您应该能够使用Boxr::get_user_token()`和您个人用户帐户的ID访问该帐户中的文件。我能够创建
token=Boxr::get_user_token(“123456”,私钥:ENV.fetch('JWT_private_key'),私钥密码:ENV.fetch('JWT_private_key_password'),公钥id:ENV.fetch('JWT_public_key_id'),客户端id:ENV.fetch('BOX_client_id'),客户端机密:ENV.fetch('BOX_client_secret')
但是,当我试图从文件夹id(“12345”)获取文件夹时
我收到一个
Boxr::BoxrError:404:未找到
错误