چند وقتیه که شدید درگیر پیاده سازی oauth (لاگین با شبکه های اجتماعی) برای یه سایت که فرانتاندش با next.js و بکاندش با express.js نوشته شده هستم ولی در نهایت نتونستم اون چیزی که میخوام رو پیاده سازی کنم. یکم راهنمایی میخوام در مورد یک سری جزییات پیاده سازی که ممنون میشم کمکم کنید (حتی یکیش رو).
این چیزیه که در نهایت میخوام انجام بشه:
مرحله ۱: کاربر با کلیک رو یه دکمه به صفحه لاگین با شبکه اجتماعی مورد نظر (بگیم گوگل) وارد میشه
سوال ۱: url ای که کاربر بعد از کلیک روی دکمه بهش منتقل بشه (authorization url) رو از کجا و چطور میارید؟ چون توی url چیز هایی مثل client id هم هست که بالاخره باید یه جایی ساخته میشه.من نمیخوام برای لاگین یه صفحه پاپآپ باز کنم و میخوام فرانتاند مستقیم به authorization url منتقل بشه (دقیقا مثل همین سایت راکت). راه حل مورد نظر خودم اینه که این url رو توی سرور بسازم و وقته کاربر کلیک کرد فرانتاند اون رو از سرور بگیره و کاربر رو منتقل کنه. اینطوری نیازی نیست که client id رو علاوه بر سرور توی فرانتاند هم داشته باشم. نظرتون چیه؟
مرحله ۲: بعد از لاگین کردن کاربر به callback url منتقل میشه و code رو هم با خودش میاره. چون callback url توی فرانتاند هست من باید code رو به سرور بفرستم، اون رو access token عوض کنم و اطلاعات کاربر رو بگیرم و توی دیتابیس ذخیره کنم.
سوال۲ : این عملیات معاوضه و دریافت اطلاعات کابر رو چطور انجام میدید؟ از کتابخانه خاصی استفاده میکنید یا اینکه مستقیم http request میفرستید؟
سوال ۳ : چه اطلاعاتی از کاربر رو باید ذخیره کنم؟ جواب خودم چیز هایی که نیاز دارم + google id هست. بعضی ها دیدم access token رو هم ذخیره میکنند. نیازی بهش هست؟
نکته: من نمیخوام از passport.js استفاده کنم چون به نظرم انعطاف پذیری لازم برای انجام این کار هارو نداره. اگر داره بهم بگید:) چند تا کتابخانه دیگه رو هم امتحان کردم که بیشتر از passport.js انعطاف داشتند (مثل node-openid-client) ولی بازم باهاشون مشکلاتی داشتم.
سوال ۴: نظرتون در مورد auth0 چیه؟ توی ایران کار میکنه؟
سلام خسته نباشید
ببینید خب من از سمت لاراول میگم که کار کردم
خب ببین کاربر کلیک میکنه به دکمه میره به سمت دکمه و ایمیل انتخاب میکنه بعد برمیگرده به یه روتی که داره برمیگرده کاربر رو میسازی و تمام
حالا توی لاراول پکیج passport در مورد ورود با گوگل نیست
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟