Skip to main content

Pairing and connect another device

Getting a second device onto Sync without retyping the password. Two generations coexist: v2 shows a QR code on the desktop that the phone scans; v1 is the older channel-based flow. Protocol: Pairing flow architecture.

Map

Screens

RouteScreenPurpose
/pairPairChoice screen after a Sync sign-in. Firefox desktop goes to the QR flow; other browsers to Unsupported.
/connect_another_deviceConnectAnotherDevicePromo with app-store links; points at /pair. Linked from emails.
/pair/unsupportedPairUnsupportedBrowser cannot pair.
/pair/authority/scan_qr, /pair/authority/continue_on_mobile, /pair/authority/approve_signin, /pair/authority/sync_successPair2 Authorityv2 desktop: show QR, wait, approve, done.
/pair/authority/timeout_and_cancel, /pair/authority/download_firefoxPair2 Authority errorsv2 desktop: timed out, or the phone has no Firefox.
/pair/supplicant/ready_to_scan, /pair/supplicant/connect_this_device, /pair/supplicant/approve_signin, /pair/supplicant/sync_successPair2 Supplicantv2 phone: scan, connect, approve, done.
/pair/supplicant/timeout_and_cancel, /pair/supplicant/download_firefoxPair2 Supplicant errorsv2 phone: timed out, or opened outside Firefox.
/pair/auth/allow, /pair/auth/totp, /pair/auth/wait_for_supp, /pair/auth/completePair Authv1 desktop: allow, second step, wait, done.
/pair/supp, /pair/supp/allow, /pair/supp/wait_for_authPair Suppv1 phone: allow, wait.
/pair/supp/complete, /pair/successPairSuccessv1 phone: done.
/pair/failurePairFailurePairing failed or was rejected.
/oauth/success/:clientIdPairSuccessTerminal screen when the code is delivered without a WebChannel.
/poc_deep_link, /poc_pair_init, /poc_pair_startproof of conceptDevelopment pages behind the pocPairingRoutes flag.
/post_verify/cad_qr/get_started, /post_verify/cad_qr/ready_to_scan, /post_verify/cad_qr/scan_code, /post_verify/cad_qr/connectedcad_qr (legacy)Earlier QR flow, replaced by v2.

Notes

  • v2 is served only when the content server's showReactApp.pair2Routes flag is on. The QR payload carries the channel id and key in the URL hash, so the key never reaches the server.