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.
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.
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.
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.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.Add Synq’s redirect URI
Add the callback URL Synq displays in Brand → Connections → X. X allows multiple — add one per environment.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.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.
| Feature | Clerk | WorkOS | Auth0 | Synq |
|---|---|---|---|---|
| X / Twitter sign-in shipped | ||||
| Modern OAuth-2 + PKCE (not legacy 1.1) | Mixed | Mixed | ||
| Refresh-token support | Limited | Limited | ||
| 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.
