لو كنا عايزين نعمل أكونت علي Instagram مثلاً ونروح نضغط علي زرار Login With Facebook محدش سئل نفسه إزاي العملية دي بتحصل ؟ أو بمعني تاني هل لما نضغط علي Login With Facebook فيسبوك بتشير الباسورد بتاعك مع Instagram عشان تحصل عملية الدخول ؟
الإجابة هتكون لأ طبعا لان Facebook هي أمينة جداً علي البيانات الحساسة اللي زي دي ... طيب السؤال هنا إزاي العملية دي بتحصل؟
العملية دي بتم بإستخدام حاجة إسمها OAUTH ... إيه هو ال OAUTH ؟
الكلمة دي إختصار ل Open Standard Authorization دي حاجة بت provide application حاجة إسمها Secure Designated Access بمعني إنها بتديك الصلاحية إنك توصل لبعض المعلومات في ال application دا يعني لما نضغط علي زرار Login With Facebook أكنك بتقول ل Facebook إن Instagram تاخد معلومات البروفايل بتاعك علي فيس بوك زي إسمك أو صورة البروفايل و معلومات تانية بس مش حساسة زي الباسورد
واللي بيحصل إن ال OAUTH دا مش بيشير الباسورد بتاعك بس بيوفر حاجة اسمها Authorization Token دا بي prove identity ما بين ال consumer اللي هو Instagram و ال service provider اللي هي Facebook.
بشكل أوضح إن Facebook بتبعت token ل Instagram عشان تستخدمه بدل ماتبعت الباسورد بتاعك عشان تسجل الدخول والعملية دي بتم عشان Facebook عايزة تعرف إن اللي عايز يسجل دخول علي Instagram هو هو نفس الشخص اللي عايز يعمل Login With Facebook والعملية دي بنسميها Authorization ودلوقتي هنشوف كلمتين
شبه بعض اوي وبعض الناس ميعرفوش الفرق بينهم وهما ال Authorization وال Authentication
ال Authorization وهي إنك بتاخد الإذن عشان تعمل حاجة مُعينة زي ما Instagram أخدت الإذن من Facebook عشان تحصل عملية الدخول.
إنما ال Authentication هي بتحصل عشان تتأكد إنك فعلاً الشخص الصح عشان عارف شوية أسئلة بمعني إن Facebook ممكن تسئلك شوية أسئلة إنت عاملها private عشان تتاكد إنك فعلاً الشخص الصحيح.
خلونا نتخيل إن محمد مثلاً غني وعنده سواق خاص ومحمد إعطي للسواق دا مفتاح العريبة عشان يسوقها فممكن نقدر نشبه مفتاح العربية (valet key) بال OAUTH بحيث إنه يخلي السواق إنه يحرك العربية لأن ميقدرش يخليه يفتح صندوق العربية (trunk/glove box) فاهكذا لما طلبنا من Facebook معلومات من خلال ال Instagram دا مش معناه إن Instagram تقدر تاخد باسورد ال Facebook ... طيب عايزين نعرف ال OAUTH بتشتغل ازاي ؟
عشان نعرف إزاي هنتخيل محادثة بين 3 أشخاص محمد وعلي و Twitter ومحمد دا هو ال user وعلي هو ال consumer و Twitter هو ال service provider
المحادثة بين محمد و علي
محمد: علي أنا عايزك تنشر لينكات بشكل مباشر من علي الاكونت بتاعي علي Twitter
علي: جميل أنا هاخد الإذن من Twitter بالنشر
المحادثة بين علي و Twitter
علي: أنا عندي user وحابب إني أنشر علي الأكونت بتاعه ممكن تعطيني ال token ؟
Twitter: تمام دا security token and secret
المحادثة بين محمد وعلي
علي: أنا بعتلك طلب يا محمد من خلال ال Twitter إقبله وخلي ال token معاك
محمد: تمام
المحادثة بين محمد و Twitter
محمد: يا Twitter أنا عايز أعمل authorize لل token اللي أخدته من علي
Twitter: تمام إنت عايز تسمح ل علي إنه يعمل x,y and z بالأكونت بتاعك علي Twitter
محمد: تمام أنا موافق
Twitter: تمام إرجع ل علي وقوله إنه يستخدم ال request token.
المحادثة بين علي و Twitter
علي: ممكن يا Twitter أبدل ال request token بال access token
Twitter: ايوه ممكن إتفضل ال access token secret
علي: يا Twitter أنا عايز أنشر لينكات من علي حساب محمد
Done ! :Twitter