Dart Requires Chilkat v11.5.0+
Dart
Box: Authorize a User with OAuth 2.0
See more Box Examples
Interactive local-development example using a browser and a loopback callback. Register exactly http://localhost:3017/ in the Box User app. Run this in a trusted environment that can hold the client secret. A deployed web app must handle its registered HTTPS callback on the server.
See the Box API guide for setup and the complete workflow.
Chilkat Dart Downloads
import 'package:chilkat/chilkat.dart';
void main() {
// Requires Chilkat 11.5.0 or later and a previously unlocked Chilkat bundle.
// See Global Unlock Sample.
// Guide: Box API Guide.
final oauth2 = CkOAuth2();
oauth2.listenPort = 3017;
oauth2.authorizationEndpoint = 'https://account.box.com/api/oauth2/authorize';
oauth2.tokenEndpoint = 'https://api.box.com/oauth2/token';
oauth2.clientId = 'BOX_CLIENT_ID';
oauth2.clientSecret = 'BOX_CLIENT_SECRET';
// Use Box's documented confidential-client authorization-code flow.
oauth2.codeChallenge = false;
final String url;
try {
url = oauth2.startAuth();
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
try {
oauth2.launchBrowser(url);
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
var elapsedMs = 0;
while ((elapsedMs < 120000) && (oauth2.authFlowState < 3)) {
oauth2.sleepMs(100);
elapsedMs += 100;
}
if (oauth2.authFlowState < 3) {
oauth2.cancel();
print('Authorization timed out.');
return;
}
if (oauth2.authFlowState != 3) {
print('Authorization was denied or failed. State: ${oauth2.authFlowState}');
return;
}
// Retain both tokens in your application's protected token store.
// The variables below are deliberately not printed.
final accessToken = oauth2.accessToken;
final refreshToken = oauth2.refreshToken;
// For this local-development example only, save in a directory restricted to this user.
// Create qa_data/tokens before running; never put this file under a web root.
final tokens = CkJsonObject();
try {
tokens.load(oauth2.accessTokenResponse);
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
try {
tokens.writeFile('qa_data/tokens/box_oauth.json');
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
print('Authorization complete; token response saved in the protected local token file.');
}