DevGuide ๐Ÿ‡ต๐Ÿ‡ธ
10.9K subscribers
2.64K photos
18 videos
127 files
3.55K links
Join our channel for top-notch programming hacks, epic discussions, and brilliant career moves. ๐Ÿš€

โšก๏ธ Stay connected with me: linktr.ee/AliSamir

๐Ÿ“ To advertise on the channel: https://telega.io/c/the_developer_guide
Download Telegram
Clone Wars - Open Source Clones of Popular Sites


100+ open-source clones and alternatives of popular sites like Airbnb, Amazon, Instagram, Netflix, TikTok, Spotify, WhatsApp, YouTube, etc.

List contains source code, tutorials, demo links, tech stack, and GitHub stars count. Great for learning purpose!

https://github.com/GorvGoyl/Clone-Wars
โค5
This media is not supported in your browser
VIEW IN TELEGRAM
Beautiful React Loaders Collection ๐Ÿ’ฏ


React Loadly is a modern, high-performance library of React loaders, spinners, and loading indicators.

Itโ€™s built with TypeScript, optimized for Next.js / SSR, and designed with accessibility and developer experience in mind.

โ€”โ€”โ€”

๐Ÿ”— npm: https://www.npmjs.com/package/react-loadly
๐Ÿ”— GitHub: https://github.com/Mostafashadow1/react-loadly
๐Ÿ”— Showcase: https://mostafashadow1.github.io/react-loadly-showCases
โค7
ู…ู† ุฃู‡ู… ุงู„ู…ูุงู‡ูŠู… ุงู„ู„ูŠ ู„ุงุฒู… ุชุชุนู„ู…ู‡ุง ููŠ React ๐Ÿ’ฏ
.
.
ุจูุถู„ ุงู„ู„ู‡ุŒ ุชู… ู†ุดุฑ ุฃูˆู„ ู…ู‚ุงู„ ุนู„ู‰ ู…ุฏูˆู†ุฉ JavaScript in Plain English ุนู„ู‰ ู…ู†ุตุฉ Medium ๐Ÿš€
.
.
Mastering React Context API: Best Practices, Patterns, and Pitfalls ๐Ÿ’ฏ


The React Context API is a powerful feature for managing global state across a component tree, eliminating the need for prop drilling. Introduced in React 16.3, itโ€™s beneficial for sharing data such as themes, authentication status, or user preferences.

โ€”โ€”โ€”

Read Full Article ๐Ÿ‘‡

https://medium.com/javascript-in-plain-english/mastering-react-context-api-best-practices-patterns-and-pitfalls-655e3410cae5
โค6
ุฏุฑุฏุดุฉ ุณุฑูŠุนุฉ ุนู† ุงู„ู€ WebRTC โšก๏ธ
.
.
ู„ูˆ ุฑุฌุนู†ุง ูƒุฏู‡ ุจุงู„ุฐุงูƒุฑุฉ ุดูˆูŠุฉ ู„ุฃูˆู„ ู…ุฑุฉ ุฌุฑุจุช ุชุนู…ู„ ู…ูƒุงู„ู…ุฉ ููŠุฏูŠูˆ ุฃูˆู†ู„ุงูŠู†ุŒ ุฃูƒูŠุฏ ูƒู†ุช ู…ู†ุจู‡ุฑ ุฅู†ูƒ ุดุงูŠู ุงู„ุดุฎุต ู‚ุฏุงู…ูƒ ุจุงู„ุตูˆุช ูˆุงู„ุตูˆุฑุฉ ููŠ ู†ูุณ ุงู„ูˆู‚ุช. ูŠู…ูƒู† ู…ุง ุณุฃู„ุชุด ู†ูุณูƒ ูˆู‚ุชู‡ุง: ุฅูŠู‡ ุงู„ู„ูŠ ุจูŠุญุตู„ ุฎู„ู ุงู„ูƒูˆุงู„ูŠุณ ุนุดุงู† ุงู„ุชุฌุฑุจุฉ ุฏูŠ ุชุจุงู† ุณู‡ู„ุฉ ุจุงู„ุดูƒู„ ุฏู‡ุŸ

ุชุฎูŠู‘ู„ ุฅู†ูƒ ุจุชูƒู„ู‘ู… ุญุฏ ููŠ ุฏูˆู„ุฉ ุชุงู†ูŠุฉโ€ฆ ุฅุฒุงูŠ ุงู„ุตูˆุช ูŠุทู„ุน ู…ู† ุนู†ุฏูƒุŒ ูŠุนุฏูŠ ุนู„ู‰ ุดุจูƒุฉ ุงู„ุฅู†ุชุฑู†ุช ุจูƒู„ ุชุนู‚ูŠุฏุงุชู‡ุงุŒ ูŠูˆุตู„ ู„ู‡ ููŠ ุฃู‚ู„ ู…ู† ุซุงู†ูŠุฉุŒ ูˆู…ู† ุบูŠุฑ ู…ุง ูŠุจู‚ู‰ ููŠู‡ delay ูˆุงุถุญุŸ
ูˆุฅุฒุงูŠ ุงู„ููŠุฏูŠูˆ ุจูŠุชุจุนุช frame ูˆุฑุงุก ุงู„ุชุงู†ูŠ ูƒุฃู†ู‡ ุจุซ ู…ุจุงุดุฑุŒ ุฑุบู… ุฅู† ููŠ ุงู„ู†ุต ููŠู‡ firewalls ูˆ NATs ูˆุฑุงูˆุชุฑุงุชุŒ ูˆูƒุงุจู„ุงุช ุจุญุฑูŠุฉ ุจุทูˆู„ ุขู„ุงู ุงู„ูƒูŠู„ูˆู…ุชุฑุงุชุŸ

ูˆู‡ู†ุง ูŠุธู‡ุฑ ุฏูˆุฑ ุงู„ู€ WebRTC...

โ€”โ€”โ€”

๐Ÿ”— LinkedIn:
https://www.linkedin.com/posts/mentoor-io_mentoor-softwaredevelopment-softwaredeveloper-activity-7377714952352112640-Cs_-

๐Ÿ”— Facebook:
https://www.facebook.com/share/p/1DUxGMUET3

๐Ÿ”— Qabilah:
https://qabilah.com/posts/ุงุณุชูƒุดู-ุณุฑ-ุงู„ู€-webrtc-ูƒูŠู-ุชุชูˆุงุตู„-ููŠ-ุงู„ูˆู‚ุช-ุงู„ุญู‚ูŠู‚ูŠ-ุจุฏูˆู†-ุชุฃุฎูŠุฑ~m8y4l4HD_0I

โ€”โ€”โ€”

ูˆูู‚ูƒู… ุงู„ู„ู‡ ู„ูƒู„ ุฎูŠุฑ ๐ŸŒฟ
โค5
ููŠุฏูŠูˆ ู…ู‡ู… ุฌุฏู‹ุง ๐Ÿ’ฏ

Documentation Best Practices | ุดุฑูƒุงุช ูƒุชูŠุฑ ุจุชู‡ู…ู„ู‡ ุฑุบู… ุฃู‡ู…ูŠุชู‡


- ูŠุนู†ูŠ ุฅูŠู‡ Documentation ูˆู„ูŠู‡ ู…ู‡ู…ุฉ ุฌุฏู‹ุง.
- ุฃู†ูˆุงุน ุงู„ู€ Documentation ุงู„ู…ุฎุชู„ูุฉ: README, Code Comments, API Docs, Architecture Docs, RFCs, OPDOCs.
- ุฅุฒุงูŠ ุชูƒุชุจ Docs ูุนู‘ุงู„ุฉ ูˆุณู‡ู„ุฉ ุชุชูู‡ู….
- ุงู„ุฃุฎุทุงุก ุงู„ุดุงุฆุนุฉ ุงู„ู„ูŠ ุจุชุจูˆู‘ุธ ุฃูŠ Documentation.

โ€”โ€”โ€”

https://youtu.be/D92MZJboOxs
โค3
ู…ุฌู…ูˆุนุฉ ู…ู‚ุงู„ุงุช ู…ู…ุชุงุฒุฉ ุชุฎุต Node.js ๐Ÿ’ฏ
.
.
Part 1: Visualizing the Node.js Event Loop

https://www.builder.io/blog/visual-guide-to-nodejs-event-loop

Part 2: Visualizing nextTick and Promise Queues in Node.js

https://www.builder.io/blog/NodeJS-visualizing-nextTick-and-promise-queues

Part 3: Visualizing Timer Queue in Node.js

https://www.builder.io/blog/visualizing-nodejs-timer-queue

Part 4: Visualizing the I/O Queue in the Node.js Event Loop

https://www.builder.io/blog/visualizing-nodejs-io-queue

Part 5: Visualizing I/O Polling in the Node.js Event Loop

https://www.builder.io/blog/visualizing-nodejs-io-polling

Part 6: Visualizing the Check Queue in the Node.js Event Loop

https://www.builder.io/blog/visualizing-nodejs-check-queue

Part 7: Visualizing the Close Queue in the Node.js Event Loop

https://www.builder.io/blog/visualizing-nodejs-close-queue
โค4
๐Ÿ” ุงู„ูุฑู‚ ุจูŠู† Hashing ูˆ Encryption ูˆ Salting ูˆ Pepper
.
.
ุงู„ุฃุฑุจุน ู…ุตุทู„ุญุงุช ู‚ุฑูŠุจูŠู† ู…ู† ุจุนุถ ููŠ ุฅู† ูƒู„ู‡ู… ู„ูŠู‡ู… ุนู„ุงู‚ุฉ ุจุชุฃู…ูŠู† ุงู„ู€ data. ุจุณ ุงู„ุญู‚ูŠู‚ุฉ ุฅู† ูƒู„ ูˆุงุญุฏ ููŠู‡ู… ู„ูŠู‡ ู‡ุฏู ู…ุฎุชู„ู ุชู…ุงู…ู‹ุง ูˆุทุฑูŠู‚ุฉ ุงุณุชุฎุฏุงู… ู…ุฎุชู„ูุฉุŒ ูˆู„ูˆ ุฎู„ุทุช ุจูŠู†ู‡ู… ุฃูˆ ุงุณุชุนู…ู„ุช ุญุงุฌุฉ ู…ูƒุงู† ุงู„ุชุงู†ูŠุฉ ู‡ุชุนู…ู„ ู…ุดูƒู„ุฉ ูƒุจูŠุฑุฉ ููŠ ุงู„ุณูŠุณุชู… ุจุชุงุนูƒ.

ุชุฎูŠู„ ู…ุนุงูŠุง ุฅู†ูƒ ุจุชุนู…ู„ ู…ู†ุตุฉ ููŠู‡ุง ู…ุณุชุฎุฏู…ูŠู† ุจูŠุณุฌู„ูˆุง ุจุงู„ุฅูŠู…ูŠู„ ูˆุงู„ุจุงุณูˆุฑุฏ. ุทุจูŠุนูŠ ุฅู†ูƒ ู„ุงุฒู… ุชุฎุฒู† ุงู„ุจุงุณูˆุฑุฏ ุจุดูƒู„ ุขู…ู†ุŒ ุตุญุŸ ู‡ู†ุง ุจู‚ู‰ ุงู„ุณุคุงู„:

- ู‡ู„ ุฃุฎุฒู† ุงู„ุจุงุณูˆุฑุฏ ุฒูŠ ู…ุง ู‡ูˆ plain textุŸ
- ุทุจ ู‡ู„ ุฃุนู…ู„ู‡ EncryptionุŸ
- ูˆู„ุง Hashing ูƒูุงูŠุฉุŸ
- ุทุจ ุฅูŠู‡ ู„ุงุฒู…ุฉ ุงู„ู€ SaltุŸ ูˆุฅูŠู‡ ุงู„ูุฑู‚ ุจูŠู†ู‡ุง ูˆุจูŠู† ุงู„ู€ PepperุŸ

โ€”โ€”โ€”

๐ŸŸข ุงู„ู€ Hashing


ุงู„ู€ Hashing ู‡ูˆ ุฅู†ูƒ ุจุชุญูˆู„ ุงู„ู€ data (ุฒูŠ ุงู„ุจุงุณูˆุฑุฏ) ู„ุณู„ุณู„ุฉ ู…ู† ุงู„ุฃุฑู‚ุงู… ูˆุงู„ุญุฑูˆู ู…ู„ู‡ุงุด ู…ุนู†ู‰.
ุงู„ู…ูŠุฒุฉ ุงู„ุฃุณุงุณูŠุฉ: ุฏู‡ one-wayุŒ ูŠุนู†ูŠ ุชู‚ุฏุฑ ุชุญูˆู„ ุงู„ุจุงุณูˆุฑุฏ ู„ู€ hashุŒ ู„ูƒู† ู…ุณุชุญูŠู„ ุชุฑุฌุน ู…ู† ุงู„ู€ hash ู„ู„ุจุงุณูˆุฑุฏ.

๐Ÿ“Œ ุงู„ู‡ุฏู: ุชุณุชุฎุฏู…ู‡ ุนุดุงู† ุชุชุญู‚ู‚ ู…ู† ุงู„ุจูŠุงู†ุงุชุŒ ู…ุด ุนุดุงู† ุชุณุชุฑุฌุนู‡ุง.
ู…ุซุงู„: ุงู„ู…ุณุชุฎุฏู… ูŠุฏุฎู„ ุงู„ุจุงุณูˆุฑุฏุŒ ูˆุฃู†ุช ุชุนู…ู„ู‡ hash ุจู†ูุณ ุงู„ู€ algorithm ูˆุชู‚ุงุฑู† ู…ุน ุงู„ู„ูŠ ู…ุฎุฒู†ู‡.

โŒ ุงู„ู…ุดูƒู„ุฉ: ู„ูˆ ุงุชู†ูŠู† ู…ุณุชุฎุฏู…ูŠู† ุนู†ุฏู‡ู… ู†ูุณ ุงู„ุจุงุณูˆุฑุฏุŒ ุงู„ู€ hash ุจุชุงุนู‡ู… ู‡ูŠุจู‚ู‰ ู†ูุณ ุงู„ู†ุชูŠุฌุฉ. ูˆุฏู‡ ุจูŠุฎู„ูŠ ุงู„ู…ูˆุถูˆุน ุนุฑุถุฉ ู„ู‡ุฌู…ุงุช ุฒูŠ ุงู„ู€ Rainbow Tables.

โ€”โ€”โ€”

๐Ÿ”ต ุงู„ู€ Encryption


ุงู„ู€ Encryption ู…ุฎุชู„ู ุชู…ุงู…ู‹ุง. ู‡ู†ุง ุจุชุนู…ู„ ุนู…ู„ูŠุฉ reversible (ูŠุนู†ูŠ ูŠู†ูุน ุชุฑุฌุน ู„ู„ุจูŠุงู†ุงุช ุงู„ุฃุตู„ูŠุฉ).
ุชุฎุฒู† ุงู„ู€ data ู…ุดูุฑุฉุŒ ูˆุชู‚ุฏุฑ ุชููƒู‡ุง ุจุงู„ู€ key.

๐Ÿ“Œ ุงู„ู‡ุฏู: ุญู…ุงูŠุฉ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ู„ุงุฒู… ุชุณุชุฑุฌุนู‡ุง ุฒูŠ ุงู„ุฑุณุงุฆู„ุŒ ุงู„ู…ู„ูุงุชุŒ ุจูŠุงู†ุงุช ุงู„ูƒุฑูŠุฏุช ูƒุงุฑุฏโ€ฆ ุฅู„ุฎ.
ู…ุซุงู„: ุชุดููŠุฑ ุฑุณุงู„ุฉ ููŠ ูˆุงุชุณุงุจุŒ ุงู„ู…ุณุชู‚ุจู„ ูŠู‚ุฏุฑ ูŠููƒู‡ุง ุจุงู„ู€ key ูˆุงู„ุฑุณุงู„ุฉ ุงู„ุฃุตู„ูŠุฉ ุชุฑุฌุน.

โŒ ุงู„ู…ุดูƒู„ุฉ: ู„ูˆ ุงู„ู€ key ุงุชุณุฑุจุŒ ูƒู„ ุญุงุฌุฉ ู…ูƒุดูˆูุฉ.

โ€”โ€”โ€”

๐ŸŸก ุงู„ู€ Salting


ุงู„ู€ Salt ู‡ูˆ string ุนุดูˆุงุฆูŠ ุจุชุถูŠูู‡ ู„ู„ุจุงุณูˆุฑุฏ ู‚ุจู„ ู…ุง ุชุนู…ู„ู‡ hash.
ู„ูŠู‡ุŸ ุนุดุงู† ุชู…ู†ุน ุงู„ู‡ุฌู…ุงุช ุงู„ู„ูŠ ุจุชุนุชู…ุฏ ุนู„ู‰ ุฅู† ู†ูุณ ุงู„ุจุงุณูˆุฑุฏ ุนู†ุฏู‡ ู†ูุณ ุงู„ู€ hash.

๐Ÿ“Œ ุงู„ู‡ุฏู: ุชุนู…ู„ ูƒู„ hash ู…ุฎุชู„ู ุญุชู‰ ู„ูˆ ูƒู„ู…ุงุช ุงู„ุณุฑ ู…ุชุดุงุจู‡ุฉ.

ู…ุซุงู„:
- ู…ุณุชุฎุฏู…1 = "123456" + SaltA โ†’ hash1
- ู…ุณุชุฎุฏู…2 = "123456" + SaltB โ†’ hash2

ุฑุบู… ุฅู† ุงู„ุจุงุณูˆุฑุฏ ู‡ูˆ ู†ูุณู‡ุŒ ู„ูƒู† ุงู„ู€ hash ู…ุฎุชู„ู.

โ€”โ€”โ€”

๐Ÿ”ด ุงู„ู€ Pepper


ุงู„ู€ Pepper ุดุจู‡ ุงู„ู€ Salt ู„ูƒู† ููŠ ู†ู‚ุทุฉ ู…ุฎุชู„ูุฉ: ุจูŠูƒูˆู† secret value ุจุชุถูŠูู‡ ู„ู„ุจุงุณูˆุฑุฏ ู‚ุจู„ ุงู„ู€ hashing.
ุจุนูƒุณ ุงู„ู€ Salt ุงู„ู„ูŠ ู…ู…ูƒู† ูŠุชุฎุฒู† ู…ุน ุงู„ู€ hashุŒ ุงู„ู€ Pepper ู…ุด ุจูŠุชุฎุฒู† ููŠ ุงู„ุฏุงุชุงุจูŠุฒุŒ ุจูŠุชุฎุฒู† ููŠ config ุขู…ู† ุฃูˆ environment variable.

๐Ÿ“Œ ุงู„ู‡ุฏู: ุชุถูŠู ุทุจู‚ุฉ ุญู…ุงูŠุฉ ุฅุถุงููŠุฉ ุถุฏ ุฃูŠ ุญุฏ ูŠุณุฑู‚ ุงู„ุฏุงุชุงุจูŠุฒ. ุญุชู‰ ู„ูˆ ู…ุนุงู‡ ุงู„ู€ hashes + saltsุŒ ู„ุณู‡ ู†ุงู‚ุตู‡ ุงู„ู€ pepper.

โ€”โ€”โ€”

ูƒู„ู…ุงุช ุงู„ุณุฑ ู„ุงุฒู… ุชุชุญูุธ ุจุงู„ู€ Hashing + Salt + PepperุŒ ู…ุด ุจุงู„ู€ Encryption.

ุงู„ู€ Encryption ู…ูƒุงู†ู‡ ููŠ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ู„ุงุฒู… ุชุณุชุฑุฌุนู‡ุง ุฒูŠ ุงู„ุฑุณุงุฆู„ ุฃูˆ ุงู„ู…ู„ูุงุช.

โ€”โ€”โ€”

ูˆูู‚ูƒู… ุงู„ู„ู‡ ู„ูƒู„ ุฎูŠุฑ ๐ŸŒฟ
โค12๐Ÿ”ฅ5
๐Ÿ”ฐ JavaScript DOM Selection and Manipulation
โค5
ุฏุฑุฏุดุฉ ุณุฑูŠุนุฉ ุนู† ุงู„ู€ OAuth 2.0 ๐Ÿ’ก
.
.
ุชุฎูŠู„ ุฅู†ูƒ ุฏุงุฎู„ ุชุณุฌู‘ู„ ููŠ ุชุทุจูŠู‚ ุฌุฏูŠุฏ ุนู„ุดุงู† ุชุชุงุจุน ูƒูˆุฑุณุงุชุŒ ูˆู„ู…ุง ุฌูŠุช ุชุณุฌู‘ู„ุŒ ุงู„ุชุทุจูŠู‚ ู‚ุงู„ูƒ:
"ุชู‚ุฏุฑ ุชุณุฌู‘ู„ ุจุญุณุงุจ Google ุฃูˆ GitHub ุจุฏู„ ู…ุง ุชุนู…ู„ ุฃูƒูˆู†ุช ุฌุฏูŠุฏ"

ุถุบุทุช ุนู„ู‰ ุฒุฑุงุฑ "Continue with Google"ุŒ ูˆGoogle ุทู„ุจุช ู…ู†ูƒ ุชุฎุชุงุฑ ุงู„ุฅูŠู…ูŠู„ ูˆุชูˆุงูู‚ ุนู„ู‰ ุดูˆูŠุฉ ุตู„ุงุญูŠุงุช.
ุจุนุฏู‡ุง ุงู„ุชุทุจูŠู‚ ูุชุญ ูˆุงุดุชุบู„ ูˆูƒุฃู†ูƒ ุนู…ู„ุช sign up ูุนู„ู‹ุง...

ุฅูŠู‡ ุงู„ู„ูŠ ุญุตู„ ู‡ู†ุงุŸ ๐Ÿค”
ุงู„ู„ูŠ ุญุตู„ ุจุงู„ุถุจุท ู‡ูˆ ุฅู† Google ุงุณุชุฎุฏู…ุช ุญุงุฌุฉ ุงุณู…ู‡ุง OAuth 2.0.

โ€”โ€”โ€”

๐Ÿ“Œ ูŠุนู†ูŠ ุฅูŠู‡ OAuth 2.0ุŸ


ุจุจุณุงุทุฉุŒ ุงู„ู€ OAuth 2.0 ู‡ูˆ ุจุฑูˆุชูˆูƒูˆู„ authorization (ู…ุด authentication)ุŒ ุจูŠุฎู„ู‘ูŠ ุงู„ุชุทุจูŠู‚ุงุช ุชู‚ุฏุฑ ุชุงุฎุฏ ุฅุฐู† ู…ู† ุงู„ู…ุณุชุฎุฏู… ุนุดุงู† ุชุฏุฎู„ ุนู„ู‰ ุฌุฒุก ู…ู† ู…ุนู„ูˆู…ุงุชู‡ ููŠ service ุชุงู†ูŠุฉ (ุฒูŠ Google, Facebook, GitHub) ู…ู† ุบูŠุฑ ู…ุง ูŠุนุฑููˆุง ุงู„ุจุงุณูˆุฑุฏ ุจุชุงุนุชูƒ.

ูŠุนู†ูŠ ุงู„ุชุทุจูŠู‚ ุงู„ู„ูŠ ุจุชุณุชุฎุฏู…ู‡ ู…ุด ุจูŠุดูˆู ุงู„ุจุงุณูˆุฑุฏ ุจุชุงุนุชูƒุŒ ุจุณ ุจูŠุงุฎุฏ ุชูˆูƒู† ู…ุคู‚ุช ูŠู‚ุฏุฑ ูŠุณุชุฎุฏู…ู‡ ูŠุฏุฎู„ ุนู„ู‰ ุงู„ู€ APIs ุงู„ู„ูŠ ุฃู†ุช ูˆุงูู‚ุช ุนู„ูŠู‡ุง.

ูˆุฏู‡ ุจูŠุฎู„ูŠ ุงู„ุนู…ู„ูŠุฉ ุขู…ู†ุฉุŒ ูˆุจูŠุญุงูุธ ุนู„ู‰ ุงู„ุฎุตูˆุตูŠุฉ ุจุชุงุนุชูƒ.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅุฒุงูŠ ุงู„ู€ OAuth 2.0 ุจูŠุดุชุบู„ุŸ


ุชุนุงู„ ู†ู…ุดูŠ ุฎุทูˆุฉ ุจุฎุทูˆุฉ ููŠ ุงู„ู€ flow ุงู„ู…ุดู‡ูˆุฑ ุจุชุงุน Authorization Code Grant FlowุŒ ูˆุงู„ู„ูŠ ุจูŠุณุชุฎุฏู… ููŠ web apps

1- ุงู„ู€ User Requests Login
ุงู„ุชุทุจูŠู‚ (Client) ูŠู‚ูˆู„ูƒ: "ุณุฌู‘ู„ ุจุญุณุงุจ Google ู…ุซู„ู‹ุง"ุŒ ูˆุงู„ู…ุณุชุฎุฏู… ูŠุถุบุท ุนู„ู‰ ุงู„ุฒุฑุงุฑุŒ ูˆูŠุชู… ุชูˆุฌูŠู‡ู‡ ุนู„ู‰ authorization server (ุฒูŠ Google).


2- ุงู„ู€ User Grants Permission
ุฌูˆุฌู„ ูŠุทู„ุจ ู…ู†ูƒ ุชุณุฌู‘ู„ ุฏุฎูˆู„ ูˆุชูˆุงูู‚ ุนู„ู‰ ุงู„ู€ permissions ุงู„ู„ูŠ ุงู„ุชุทุจูŠู‚ ุทุงู„ุจู‡ุง (ุฒูŠ ุงู„ุฅูŠู…ูŠู„ุŒ ุงู„ุงุณู…ุŒ ุฅู„ุฎ).


3- ุงู„ู€ Authorization Code
ู„ูˆ ูˆุงูู‚ุชุŒ Google ู‡ูŠุจุนุช authorization code ู„ู„ุชุทุจูŠู‚ (ุฃูˆ ุชุญุฏูŠุฏู‹ุง ู„ู„ู€ redirect URL ุงู„ู„ูŠ ุงู„ุชุทุจูŠู‚ ุญุฏุฏู‡ ู‚ุจู„ ูƒุฏู‡).


4- ุงู„ู€ Token Exchange
ุงู„ุชุทุจูŠู‚ ูŠุงุฎุฏ ุงู„ู€ authorization code ุฏู‡ ูˆูŠุจุนุช request ู„ู€ token endpoint ุนู„ุดุงู† ูŠุจุฏู„ู‡ ุจู€ access token (ูˆุณุงุนุงุช ูƒู…ุงู† refresh token).


5- ุงู„ู€ Access Protected APIs
ุจู…ุฌุฑุฏ ู…ุง ุงู„ุชุทุจูŠู‚ ูŠุงุฎุฏ ุงู„ู€ access tokenุŒ ูŠู‚ุฏุฑ ูŠุณุชุฎุฏู…ู‡ ูŠุทู„ุจ ุจูŠุงู†ุงุช ู…ู† Google APIsุŒ ุจุณ ููŠ ุญุฏูˆุฏ ุงู„ู€ scope ุงู„ู„ูŠ ูˆุงูู‚ุช ุนู„ูŠู‡.

โ€”โ€”โ€”

ุฅุฒุงูŠ ุจูŠุฃู…ู† ุงู„ู€ APIsุŸ ๐Ÿ”


ู„ูˆ ุนู†ุฏูƒ API ูˆุนุงูŠุฒ ุชุฃู…ู†ู‡ุงุŒ ู…ู…ูƒู† ุชุณุชุฎุฏู… OAuth 2.0 ุจุญูŠุซ:

- ุฃูŠ Client ู…ุด ู‡ูŠู‚ุฏุฑ ูŠูˆุตู„ ู„ู€ API ุบูŠุฑ ู„ู…ุง ูŠู‚ุฏู‘ู… Access Token ุตุงู„ุญ.
- ุงู„ู€ Backend ุจุชุงุนูƒ ูŠู‚ุฏุฑ ูŠุชุญู‚ู‘ู‚ ู…ู† ุงู„ุชูˆูƒู† (ู…ุซู„ู‹ุง JWT ุฃูˆ ุนู† ุทุฑูŠู‚ introspection endpoint).
- ุชู‚ุฏุฑ ุชุชุญูƒู‘ู… ููŠ ุงู„ุตู„ุงุญูŠุงุช ุนู† ุทุฑูŠู‚ ุงู„ู€ scope (ูŠุนู†ูŠ ู…ุซู„ู‹ุง ุชูˆูƒู† ู…ุนูŠู† ูŠู‚ุฏุฑ ูŠู‚ุฑุฃ ุจุณุŒ ูˆุชูˆูƒู† ุชุงู†ูŠ ูŠู‚ุฏุฑ ูŠูƒุชุจ ูˆูŠุนุฏู‘ู„).
- ุชู‚ุฏุฑ ุชุณุญุจ ุตู„ุงุญูŠุงุช ุงู„ุชูˆูƒู† ููŠ ุฃูŠ ูˆู‚ุช (Revoke).


ุจุงู„ุชุงู„ูŠุŒ OAuth 2.0 ุจูŠุฃู…ู‘ู† ุงู„ู€ APIs ุนู† ุทุฑูŠู‚ ุฅู†ู‡:

โœ… ุจูŠู‚ู„ู„ ุงู„ุงุนุชู…ุงุฏ ุนู„ู‰ ูƒู„ู…ุงุช ุงู„ู…ุฑูˆุฑ
โœ… ุจูŠุณู…ุญ ุจุงู„ู€ delegation (ุชุทุจูŠู‚ ูŠุงุฎุฏ ุฅุฐู† ู…ู† ู…ุณุชุฎุฏู… ูŠูˆุตู„ ู„ุญุงุฌุฉ ู…ุด ุจุชุงุนุชู‡)
โœ… ุจูŠุฎู„ูŠ ุงู„ู€ tokens ู…ุคู‚ุชุฉุŒ ูˆู…ู…ูƒู† ุชุชุญูƒู… ููŠ ุตู„ุงุญูŠุงุชู‡ุง ูˆู…ุฏู‘ุชู‡ุง

โ€”โ€”โ€”

๐Ÿ“Œ ุฃู†ูˆุงุน ุงู„ู€Grant Types ุงู„ู…ุดู‡ูˆุฑุฉ:


- ุงู„ู€ Authorization Code (with PKCE): ู„ู„ู…ูˆุจุงูŠู„ ูˆุงู„ูˆูŠุจ.
- ุงู„ู€ Client Credentials: ู„ู„ู€ machine-to-machine apps.
- ุงู„ู€ Password (deprecated): ูƒุงู† ุจูŠุณุชุฎุฏู… ู„ู…ุง ุงู„ู…ุณุชุฎุฏู… ูŠูƒุชุจ ุงู„ู€ username ูˆุงู„ุจุงุณูˆุฑุฏ ููŠ ู†ูุณ ุงู„ุชุทุจูŠู‚ (ุบูŠุฑ ุขู…ู†).
- ุงู„ู€ Implicit (deprecated): ุฒู…ุงู† ูƒุงู† ุจูŠุชุณุชุฎุฏู… ู„ู„ู€ SPA apps ู„ูƒู†ู‡ ุบูŠุฑ ู…ูˆุตู‰ ุจู‡.

โ€”โ€”โ€”

ู„ูˆ ูƒู†ุช ุจุชุณุชุฎุฏู… OAuth 2.0 ููŠ ู…ูˆุจุงูŠู„ ุฃูˆ SPA appุŒ ู„ุงุฒู… ุชุณุชุฎุฏู… ุญุงุฌุฉ ุงุณู…ู‡ุง PKCE (Proof Key for Code Exchange) ุนู„ุดุงู† ุชู…ู†ุน ุงู„ู€ authorization code ู…ู† ุฅู†ู‡ ูŠุชุณุฑู‚.

โ€”โ€”โ€”

ูˆูู‚ูƒู… ุงู„ู„ู‡ ู„ูƒู„ ุฎูŠุฑ ๐ŸŒฟ
โค11
Debugging Tips in Next.js ๐Ÿ’ฏ
โค4
Master Async Iterators โœ…

Make your JavaScript apps faster and smarter with async iterators.

Stream data efficiently, handle errors gracefully, and keep performance top-notch
โค5