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

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 Python Downloads

Chilkat2-Python
import sys
import chilkat2

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

oauth2 = chilkat2.OAuth2()
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
url = oauth2.StartAuth()
if (oauth2.LastMethodSuccess != True):
    print(oauth2.LastErrorText)
    sys.exit()

success = oauth2.LaunchBrowser(url)
if (success != True):
    print(oauth2.LastErrorText)
    sys.exit()

elapsedMs = 0
while (elapsedMs < 120000) and (oauth2.AuthFlowState < 3) :
    oauth2.SleepMs(100)
    elapsedMs = elapsedMs + 100

if (oauth2.AuthFlowState < 3):
    oauth2.Cancel()
    print("Authorization timed out.")
    sys.exit()

if (oauth2.AuthFlowState != 3):
    print("Authorization was denied or failed. State: " + str(oauth2.AuthFlowState))
    sys.exit()

# Retain both tokens in your application's protected token store.
# The variables below are deliberately not printed.
accessToken = oauth2.AccessToken
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.
tokens = chilkat2.JsonObject()
success = tokens.Load(oauth2.AccessTokenResponse)
if (success != True):
    print(tokens.LastErrorText)
    sys.exit()

success = tokens.WriteFile("qa_data/tokens/box_oauth.json")
if (success != True):
    print(tokens.LastErrorText)
    sys.exit()

print("Authorization complete; token response saved in the protected local token file.")