The device authorization flow enables OAuth on devices that have limited input capabilities, such as smart TVs, IoT devices, and CLIs.
Overview
This flow allows devices without a browser to authenticate users by directing them to complete authorization on a secondary device (phone or computer).
Use Cases
Smart TVs
Media consoles
Picture frames
Printers
CLI applications
IoT devices
Flow Diagram
Device Authorization Request
POST/device
Parameters
Parameter
Required
Description
client_id
Yes
Client identifier
scope
Optional
Requested scopes
Example
Response
Field
Description
device_code
Code for token polling (keep secret)
user_code
Code user enters (6-8 characters)
verification_uri
URL user visits
verification_uri_complete
URL with code pre-filled
expires_in
Seconds until codes expire
interval
Minimum polling interval
Display to User
Show the user:
Or display a QR code linking to verification_uri_complete.
Token Polling
POST/token
Poll the token endpoint while waiting for user authorization.
Parameters
Parameter
Required
Description
grant_type
Yes
urn:ietf:params:oauth:grant-type:device_code
device_code
Yes
Device code from initial response
client_id
Yes
Client identifier
Example
Responses
Authorization Pending:
Slow Down (polling too fast):
Success:
Access Denied:
Expired Token:
Complete Example
CLI Application (Node.js)
Python CLI
User Experience
The activation page shows:
After entering the code, users see the standard consent screen.
Security Considerations
Protect device_code - It's equivalent to an authorization code
Respect interval - Don't poll faster than specified