我目前正在使用 FormStack 表单服务的 Rails 5.2 应用程序。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>
但是,当我尝试通过 ID 检索文件夹时,我收到一个错误,当我通过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 授予对应用程序的访问权限。我不确定为什么我无法获取该文件夹。当我转到文件夹 ID 时,该文件夹就在那里,并且在开发人员控制台中,我具有管理员访问权限。有什么帮助吗?