Device Flow

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

spinner

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

circle-exclamation

Next Steps

Last updated

Was this helpful?