<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: abu</title>
    <description>The latest articles on DEV Community by abu (@abu_33002dfe22bf9dcf63338).</description>
    <link>https://dev.to/abu_33002dfe22bf9dcf63338</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3726182%2Fe50de9e6-34ca-4e95-b45f-811c487597f4.png</url>
      <title>DEV Community: abu</title>
      <link>https://dev.to/abu_33002dfe22bf9dcf63338</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abu_33002dfe22bf9dcf63338"/>
    <language>en</language>
    <item>
      <title>Figma OAuth Made No Sense to Me — Until I Understood This Flow 😭</title>
      <dc:creator>abu</dc:creator>
      <pubDate>Thu, 22 Jan 2026 12:38:33 +0000</pubDate>
      <link>https://dev.to/abu_33002dfe22bf9dcf63338/figma-oauth-made-no-sense-to-me-until-i-understood-this-flow-3aa2</link>
      <guid>https://dev.to/abu_33002dfe22bf9dcf63338/figma-oauth-made-no-sense-to-me-until-i-understood-this-flow-3aa2</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Figma OAuth is not like Google or GitHub OAuth. You don’t just add credentials and ship. Your app must be reviewed and approved, or OAuth won’t work at all. Here’s the exact flow so you don’t waste days like I did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Figma OAuth Feels Weird at First
&lt;/h2&gt;

&lt;p&gt;I assumed Figma OAuth would be:&lt;/p&gt;

&lt;p&gt;redirect → approve → callback → done&lt;/p&gt;

&lt;p&gt;Just like Google or GitHub.&lt;/p&gt;

&lt;p&gt;That assumption was wrong.&lt;/p&gt;

&lt;p&gt;Figma is very selective about which apps can use OAuth. If your app isn’t properly reviewed and approved, OAuth simply won’t work — even if your code is perfect.&lt;/p&gt;

&lt;p&gt;Once I understood their review-first mindset, everything clicked.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Figma OAuth Flow (Step by Step)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Go to the Figma Developer Platform
&lt;/h3&gt;

&lt;p&gt;Create a developer account on the Figma Developers portal.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create a New App
&lt;/h3&gt;

&lt;p&gt;After logging in:&lt;/p&gt;

&lt;p&gt;Create a new app&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7jdfhzr4jf734a7cjqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7jdfhzr4jf734a7cjqd.png" alt=" " width="588" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give it a name (this matters for review)&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Get Your OAuth Credentials
&lt;/h3&gt;

&lt;p&gt;Inside your app:&lt;/p&gt;

&lt;p&gt;Open OAuth credentials&lt;/p&gt;

&lt;p&gt;Copy your Client ID and Client Secret&lt;/p&gt;

&lt;p&gt;You’ll need these later when wiring OAuth in your backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Publish Your App (This Is the Important Part)
&lt;/h3&gt;

&lt;p&gt;Publishing is mandatory. This is where most people get stuck.&lt;/p&gt;

&lt;p&gt;It has four sections 👇&lt;/p&gt;

&lt;h4&gt;
  
  
  Section 1: Describe Your App
&lt;/h4&gt;

&lt;p&gt;Upload a logo&lt;br&gt;&lt;br&gt;
(Don’t overthink it — a placeholder logo is fine. You can change it later.)&lt;/p&gt;

&lt;p&gt;Write a clear description of what your app does&lt;/p&gt;

&lt;p&gt;Keep it simple and honest.&lt;/p&gt;

&lt;h4&gt;
  
  
  Section 2: Review Scope (Critical)
&lt;/h4&gt;

&lt;p&gt;This determines what access your app is requesting.&lt;/p&gt;

&lt;p&gt;If you’re only using OAuth for login, select:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;current_user:read&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You must also explain why you need it.&lt;/p&gt;

&lt;p&gt;Template you can use:&lt;/p&gt;

&lt;p&gt;I use this scope to verify that the user is a real Figma user before allowing them to access the application.&lt;/p&gt;

&lt;p&gt;Yes — this is enough.&lt;/p&gt;

&lt;h4&gt;
  
  
  Section 3: Reviewer Instructions (Most Important)
&lt;/h4&gt;

&lt;p&gt;This is where you explain how the reviewer should test your app.&lt;/p&gt;

&lt;p&gt;If this section is unclear, your app will be rejected.&lt;/p&gt;

&lt;p&gt;Template (customize this):&lt;/p&gt;

&lt;p&gt;This app uses Figma OAuth only for authentication (“Sign in with Figma”).&lt;/p&gt;

&lt;p&gt;Steps to test:&lt;/p&gt;

&lt;p&gt;Open the app&lt;/p&gt;

&lt;p&gt;Click “Sign in with Figma”&lt;/p&gt;

&lt;p&gt;Approve the OAuth request&lt;/p&gt;

&lt;p&gt;You will be redirected back and logged in&lt;/p&gt;

&lt;p&gt;Be explicit. Assume the reviewer knows nothing about your app.&lt;/p&gt;

&lt;h4&gt;
  
  
  Section 4: Final Review
&lt;/h4&gt;

&lt;p&gt;Review everything&lt;/p&gt;

&lt;p&gt;Agree to Figma’s guidelines&lt;/p&gt;

&lt;p&gt;Submit&lt;/p&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens After Submission?
&lt;/h2&gt;

&lt;p&gt;Now you wait.&lt;/p&gt;

&lt;p&gt;⏱ Usually 2–5 business days&lt;br&gt;&lt;br&gt;
📧 You’ll receive an email&lt;/p&gt;

&lt;p&gt;If approved → you’re good to integrate OAuth.&lt;br&gt;&lt;br&gt;
If rejected → Figma tells you exactly why, so you can fix it and resubmit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways (Learned the Hard Way)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Figma OAuth ≠ Google OAuth&lt;/li&gt;
&lt;li&gt;Approval comes before integration&lt;/li&gt;
&lt;li&gt;Clear reviewer instructions matter more than code&lt;/li&gt;
&lt;li&gt;Minimal scopes = higher approval chances&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you understand this flow, Figma OAuth stops feeling “broken” and starts making sense.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6cjt3xcgv0vq0thsqc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6cjt3xcgv0vq0thsqc7.png" alt=" " width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;I build full-stack products, work on AI + developer tooling, and write about real-world engineering lessons.&lt;/p&gt;

&lt;p&gt;GitHub → &lt;a href="https://github.com/abubakar-dahir" rel="noopener noreferrer"&gt;MyGitHub&lt;/a&gt;&lt;br&gt;
LinkedIn → &lt;a href="https://www.linkedin.com/in/abubakar-hassan-2420663a3/" rel="noopener noreferrer"&gt;MyLinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
