使用Boxr JWT get_user_token- Box API时无法通过ID获取文件夹

时间:2018-10-05 17:05:55

标签: ruby jwt box-api box

我无法通过使用Boxr gem向该文件夹提供ID来访问该文件夹。以前我没有post所示的enterprise设置,现在已经修复了。我正在以以下方式使用JWT身份验证get_user_token方法创建令牌。

token = Boxr::get_user_token("38521XXXX", 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'), client_id: ENV.fetch('BOX_CLIENT_ID'), client_secret: ENV.fetch('BOX_CLIENT_SECRET'))

然后我在创建客户端时将此令牌传递给此对象。

client = Boxr::Client.new(token)

当我在客户端上检查当前用户时,这就是我得到的:

client.current_user
=> {"type"=>"user",
 "id"=>"60853XXXX",
 "name"=>"OnlineAppsPoC",
 "login"=>"AutomationUser_629741_06JgxiPtPj@boxdevedition.com",
 "created_at"=>"2018-10-04T08:41:32-07:00",
 "modified_at"=>"2018-10-04T08:41:50-07:00",
 "language"=>"en",
 "timezone"=>"America/Los_Angeles",
 "space_amount"=>10737418240,
 "space_used"=>0,
 "max_upload_size"=>2147483648,
 "status"=>"active",
 "job_title"=>"",
 "phone"=>"",
 "address"=>"",
 "avatar_url"=>"https://app.box.com/api/avatar/large/6085300897"}

当我运行client.methods时,我看到有folder_from_id,但是当我调用该方法时,出现以下错误:

pry(#<FormsController>)> client.folder_from_id("123456", fields: [])
Boxr::BoxrError: 404: Not Found
from /usr/local/bundle/gems/boxr-1.4.0/lib/boxr/client.rb:239:in `check_response_status'

我有以下设置: enter image description here

enter image description here

我也授权了该应用程序。不知道该怎么办。

2 个答案:

答案 0 :(得分:0)

 token = Boxr::get_user_token(user_id,
                        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'),
                        client_id: ENV.fetch('BOX_CLIENT_ID'),
                        client_secret: ENV.fetch('BOX_CLIENT_SECRET'))

client = Boxr::Client.new(token.access_token)
folder = client.folder_from_id(folder_id)
client.upload_file(file_path, folder)

答案 1 :(得分:0)

适用于使用C#和BOXJWT的任何人。

您只需要设置一个boxManager即可为您提供所需的一切,例如BoxFile,Folder等。

如果您的文件夹ID很好,但是如果您需要检索,则可以如下所示进行操作:

string inputFolderId = _boxManager.GetFolder(RootFolderID).Folders.Where(i => i.Name == boxFolder).FirstOrDefault().Id;  //Retrieves FolderId
Folder inputFolder = _boxManager.GetFolder(inputFolderId);