Skip to content
Consumer & community

Sign in with X.
Modern OAuth-2, not legacy 1.1.

Most identity platforms still wrap Twitter's ancient OAuth 1.1 — signing every request with a shared secret, no PKCE, no refresh tokens. Synq ships X's modern OAuth-2 flow with PKCE and proper scopes, behind standards-compliant OIDC tokens. The crypto-Twitter audience that runs on X gets a clean sign-in instead of the legacy bolt-on.

Why it matters

The crypto-native social signal

X handle, profile, and verified status are the strongest social signal in the crypto and creator economies. Asking that audience to sign up with email is friction they will avoid; letting them click Continue with X is conversion. Synq supports X's modern OAuth-2 + PKCE flow, requests the scopes you choose, and issues OIDC tokens — your code does not have to know that X is the inbound provider.

Protocol
OAuth-2 + PKCE
Not legacy OAuth 1.1
Refresh tokens
Supported
Long-lived sessions, no re-auth
Verified status
Surfaced
On the user profile

One button, modern protocol underneath

Your code only sees a standard OIDC session. The PKCE plumbing for X happens server-side, in Synq.

import { SynqProvider, useSynq } from '@synqid/react'
import { SignIn } from '@synqid/react/ui'

export default function App() {
  return (
    <SynqProvider
      issuer="https://api.synq.id"
      clientId={import.meta.env.VITE_SYNQ_CLIENT_ID}
      redirectUri={`${window.location.origin}/auth/callback`}
      theme="dark"
    >
      <Home />
      <SignIn />
    </SynqProvider>
  )
}

function Home() {
  const { signIn } = useSynq()
  return (
    <button onClick={() => signIn({ provider: 'x' })}>
      Continue with X
    </button>
  )
}

Get it live

X's developer portal is the most painful step. Synq's side is one screen.

  1. Apply for an X developer account

    Open developer.x.com → Sign up. X requires a developer account for any OAuth integration. The free tier is enough for sign-in flows.
  2. Create a project and an OAuth-2 app

    Inside the developer portal, create a Project, then add an OAuth-2 App under it. Configure User authentication settings → OAuth 2.0 + PKCE. Set the type to Web App or Native App.
  3. Add Synq’s redirect URI

    Add the callback URL Synq displays in Brand → Connections → X. X allows multiple — add one per environment.
  4. Paste credentials into Synq

    Copy the OAuth 2.0 Client ID + Client Secret from X and paste them into Synq. Toggle Enable. Synq encrypts the secret at rest.
  5. Sign in and inspect the user

    Trigger X sign-in. The OAuth consent screen shows your app name. Synq creates a user with the X handle and verified status on the profile.

How X / Twitter support compares

The big difference is OAuth-2 + PKCE versus the legacy OAuth 1.1 most stacks ship. Modern X scopes and refresh tokens depend on the modern flow.

FeatureClerkWorkOSAuth0Synq
X / Twitter sign-in shipped
Modern OAuth-2 + PKCE (not legacy 1.1)MixedMixed
Refresh-token supportLimitedLimited
Verified status surfaced on user profile
Pairs with Solana SIWS + Telegram + Matrica

Pair it with

Common questions

The X login crypto-Twitter actually wants.

Modern OAuth-2, PKCE, refresh tokens — none of which your code has to think about. One paste and you’re live.