Sample code for 30+ languages & platforms
PHP Extension Requires Chilkat v11.5.0+

Box: Get a Service Account Token with Client Credentials

See more Box Examples

Obtain a Box service-account token using the client credentials grant. Configure and authorize a Server app first. Load credentials from protected application configuration; do not ship a client secret in a public client.

See the Box API guide for setup and the complete workflow.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

//  Requires Chilkat 11.5.0 or later and a previously unlocked Chilkat bundle.
//  See Global Unlock Sample.
//  Guide: Box API Guide.

$success = false;

$curl = new CkHttpCurl();
$curl->SetVar('client_id','BOX_CLIENT_ID');
$curl->SetVar('client_secret','BOX_CLIENT_SECRET');
$curl->SetVar('enterprise_id','BOX_ENTERPRISE_ID');
//  enterprise identifies the app's service account. This is not an admin-user token.
$curl->ClearTargetOutput('*');
$curl->ClearVar('access_token');
$curl->AddTargetOutput('access_token','access_token');
$success = $curl->DoYourThing('curl -X POST \'https://api.box.com/oauth2/token\' --data-urlencode \'grant_type=client_credentials\' --data-urlencode \'client_id={{client_id}}\' --data-urlencode \'client_secret={{client_secret}}\' --data-urlencode \'box_subject_type=enterprise\' --data-urlencode \'box_subject_id={{enterprise_id}}\'');
if (($success != true) or ($curl->get_StatusCode() != 200)) {
    print 'Box request failed. HTTP status: ' . $curl->get_StatusCode() . "\n";
    print 'Failure reason: ' . $curl->get_FailReason() . "\n";
    exit;
}

if ($curl->VarDefined('!') != true) {
    print 'Expected response fields are missing.' . "\n";
    exit;
}

//  Keep this token in protected application memory; reacquire it when it expires.
//  Do not print tokens or the complete token response.
print 'Service-account access token obtained.' . "\n";
$curl->ClearTargetOutput('*');
$authorizedCommand1 = new CkStringBuilder();
$authorizedCommand1->SetString('curl -X GET \'https://api.box.com/2.0/users/me?fields=id,name,login\' -H \'Authorization: Bearer {{access_token}}\'');
$headerReplacement1 = $authorizedCommand1->Replace('{{access_token}}',$curl->getVar('access_token'));
$success = $curl->DoYourThing($authorizedCommand1->getAsString());
if (($success != true) or ($curl->get_StatusCode() != 200)) {
    print 'Box request failed. HTTP status: ' . $curl->get_StatusCode() . "\n";
    print 'Failure reason: ' . $curl->get_FailReason() . "\n";
    print $curl->responseBodyStr() . "\n";
    exit;
}

print $curl->responseBodyStr() . "\n";

?>