How to create the access token using app user id in Box-API?

Viewed 1675

I'm trying to create the access token using box app user id. I have use the following code to create the box app user

curl https://api.box.com/2.0/users \
-H "Authorization: Bearer <TOKEN>" \
-d '{"name": "Ned Stark", "is_platform_access_only": true}' \
-X POST

Then it is give the following result

{"type":"user","id":"2199107004","name":"Ned Stark","login":"AppUser_399382_9BNZHI03nJ@boxdevedition.com","created_at":"2017-08-03T00:58:04-07:00"

Is it possible to generate the access token using box app user id.?

Edited

I have generate the Public key in BOX API. Then I have file which is having Public key and Private key detail like as bellow,

{
  "boxAppSettings": {
    "clientID": <Client ID>,
    "clientSecret": <clientsecret>,
    "appAuth": {
      "publicKeyID": <publickeyid>,
      "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----\Key heresn-----END ENCRYPTED PRIVATE KEY-----\n",
      "passphrase": <phrase>
    }
  },
  "enterpriseID": <enterpriseId>
}

Then I have generate header and payload, which is as follow

$header = ["typ"=> "JWT", "alg"=>"RS256","kid"=> <public key id>];

$payload = [
    "iss"=> "<client id>",
    "sub"=> "<APP USER ID>",
    "box_sub_type"=> "user",
    "aud"=>"https://api.box.com/oauth2/token",
    "jti"=>"<I don't know what is this>",
    "exp"=>1428699385
];
$header = base64_encode(json_encode($header));
$payload = base64_encode(json_encode($payload));

After this I got stuck how to implement the private and public key here. Actually I'm having the JSON file which is downloaded from BOX API. And I can't understand what is the JTI? How to add the public key and|or private key JSON file in this? How to do it?


And I have generate the private key manually as per document, as follow

openssl genrsa -aes256 -out private_key.pem 2048

Then I gave the password as "12345". And generate public key as follow,

openssl rsa -pubout -in private_key.pem -out public_key.pem

Then I added the public key in BOX-API and I made a code as follow,

$data = file_get_contents('private_key.pem');
$result = openssl_pkey_get_private($data,"12345"); 
print_r($result);

It gives the following result

Resource id #4

These is not looking like encrypted data. And how to implement private and public when calling box api in php.?

1 Answers
Related