من راه خود را از طریق آموزش کار کردم و سعی کردم Github را به عنوان پشتیبان مجوز تنظیم کنم. من سعی می کنم سرم را در جریان کار مناسب بین برنامه مشتری و API REST مجهز به جنگو قرار دهم.
درک من این است که باید کارهای زیر را انجام دهم:
- کاربر را به آدرس زیر هدایت کنید: https://github.com/login/oauth/authorize? client_id=
- با فرض اینکه کاربر برنامه من را مجوز می دهد، تماس قبلی، با توجه به تنظیمات برنامه در Github، به URL مشخص شده با یک "کد" به عنوان پارامتر پرس و جو پاسخ تماس می دهد.
- سپس آن "کد" باید به روش زیر به Github ارسال شود تا "access_token" شخص ثالث دریافت کند: https://github.com/login/oauth/access_token? client_id=& client_secret=& code=
- تماس قبلی، access_token شخص ثالث را برمی گرداند که می توانم آن را به http://localhost:8000/auth/convert-token ارسال کنم، که به نوبه خود یک access_token ارسال می کند که باید در تمام درخواست های HTTP با DRF استفاده کنم.
- آیا این گردش کار کلی درست است یا من چیزی را اشتباه متوجه شده ام؟
- آیا این کتابخانه نقطه پایانی را ارائه می دهد که بتوانم "کد" شخص ثالث را از مرحله 2 به آن پست کنم، که به صورت داخلی با Github تماس بگیرد تا رمز دسترسی را به دست آورد (مثلاً "auth/github/")؟یعنی مخفی نگه داشتن Github از سمت مشتری. یا باید آن قطعه از پازل را پیاده سازی کنم؟
متن با موفقیت به روز شد، اما این خطاها رخ داد:
PhilipGaero این را در 23 اکتبر 2016 به پایان رساند PraveshKoirala در 24 اکتبر 2016 نظر داد
آیا راهی وجود دارد که بتوانیم از افشای آن طور که sgallen خواسته شده اجتناب کنیم؟
همکار PhilipGaero در 25 اکتبر 2016 نظر داد
این به github بستگی دارد. اگر آنها از یک جریان معمولی oauth2 استفاده می کنند، باید بتوانید نوع کلاینت خود (عمومی/محرمانه یا سرور/برنامه) را مشخص کنید و این به شما امکان می دهد برنامه خود را مخفی نگه دارید.
روح نظر داده شده 10 ژانویه 2017 • ویرایش شده توسط شبح
من شماره فعلی خود را بستم، زیرا این یکی همان است. چگونه مرحله 3 را حل کردید؟آیا نقطه پایانی جدیدی ایجاد کردید یا این endpint در جایی در بسته گنجانده شده است؟
من با google sign. in برای برنامه های سمت سرور کار می کنم و به راهنمای آنها نگاه می کنم: https://developers. google.com/identity/sign-in/web/server-side-flow
راهنما می گوید که کاربر باید کد یکبار مصرف را به سرور ارسال کند، سرور از گوگل درخواست می کند، آیا این کتابخانه این را پشتیبانی می کند؟
همکار PhilipGaero در 10 ژانویه 2017 نظر داد • ویرایش شده
شما باید سعی کنید به جای OpenID از Google OAuth2 استفاده کنید. این شبیه به مثال فیس بوک است که می توانید در Readme من پیدا کنید. اگر در حال اجرای جریان Google OAuth2 هستید ، می توانید به اینجا نگاه کنید
روح نظر داده شده 10 ژانویه 2017 • ویرایش شده توسط شبح
اما او جریان یکسان است ، Google کد را برمی گرداند و آن کد را باید به API Django ارسال کرد و از آنجا باید درخواست دیگری را به Google ارسال کنم تا Token Access را دریافت کنم. من نمونه های شما را می گذرانم و چنین ویژگی هایی را نمی بینم.
شبح در 10 ژانویه 2017 اظهار نظر کرد
تنها چیزی که من دریافت نمی کنم این است که چگونه از کد برگشت داده شده توسط OAuth2 برای دسترسی به نشانه با استفاده از بسته خود دریافت می کنید. و این 2 روز است که من را آزار می دهد. من این را در مثال فیس بوک شما نمی بینم
همکار Philipgaero در 10 ژانویه 2017 نظر داد
شما از نقطه پایانی Convert-Token استفاده می کنید. در Doc نوشته شده است.
روح نظر داده شده 10 ژانویه 2017 • ویرایش شده توسط شبح
uhm .. آیا تبدیل شده برای تبدیل Access_Token نیست که توسط Google OAuth2 برگردانده شود؟من در مورد این صحبت می کنم: https://developers. google.com/entity/sign-in/web/server-side-flow
کاربر روی دکمه ورود به سیستم کلیک می کند و دسترسی برنامه شما به مجوزهای درخواست شده را می دهد. سپس ، عملکرد پاسخ به تماس که شما در GrantOffLineAcess () مشخص کرده اید. مثلا:
همکار PhilipGaero در 10 ژانویه 2017 نظر داد • ویرایش شده
نیازی به نگرانی در مورد هر طرف سرور نیست ، از طرف من با استفاده از پایتون-سوسیالی-آته انجام می شود.
به سادگی مراحل را در اینجا دنبال کنید و خودتان یک نشانه دسترسی پیدا کنید. سپس تمام کاری که شما باید انجام دهید تبدیل آن با استفاده از Convert-Token است.
aronse در 10 ژانویه 2017 اظهار نظر کرد
من در مورد مسئله ای که شما بچه ها تجربه می کنید کاملاً مطمئن نیستم ، مراحل ذکر شده در readme را قدم به قدم دنبال کردم و فوراً کار کرد.
شبح در 10 ژانویه 2017 اظهار نظر کرد
اما من فکر می کنم جریان سمت سرور برای استفاده در مورد من صحیح تر است. اما من حدس می زنم که این کار خواهد کرد.
همکار Philipgaero در 10 ژانویه 2017 نظر داد
این بسته به جریان مشتری مشتری هدایت می شود. اگر می خواستید یک جریان سمت سرور باشد ، باید خودتان آن را مجدداً تکرار کنید.
AlexandCote اظهار داشت 23 ژانویه 2017 • ویرایش شده
Android Google SDK به طور پیش فرض از جریان سرور استفاده کنید. شما باید از یک نسخه مستهجن برای کار با جریان مشتری استفاده کنید. Google و Facebook توصیه می کنند از جریان سمت سرور نیز استفاده کنند. من فکر می کنم این یک ویژگی خوب برای این بسته برای پشتیبانی از هر دو خواهد بود.

ایده ای دارید که چگونه می توانیم در این زمینه به شما کمک کنیم؟در اینجا اطلاعاتی که پیدا کردم: پایتون-اجتماعی-آث
همکار Philipgaero در 23 ژانویه 2017 نظر داد
من آنچه را که شما بچه ها می خواهید با جریان سمت سرور انجام دهید ، دریافت نمی کنم. قبلاً توسط کتابخانه من اداره می شود.
اگر می خواهید کاری را صرفاً در سمت سرور انجام دهید ، بدون آنکه مشتری در آن شرکت داشته باشد ، می توانید این کار را با استفاده از پایتون-اجتماعی-آثار مستقیماً انجام دهید. با این حال ، اگر نمی خواهید طرف مشتری در فرآیند احراز هویت شرکت کند ، من این نکته را در استفاده از بسته خود نمی بینم.
من ممکن است در اینجا چیزی را از دست بدهم و اگر اینگونه باشد ، به توضیحات و پیوندهای بیشتری به اسناد یا مثال در مورد آنچه می خواهید انجام دهید نیاز دارم.
AlexandCote اظهار داشت 23 ژانویه 2017 • ویرایش شده
من فکر نمی کنم شما به درستی جریان را که ما صحبت می کنیم درک کنید. من سعی می کنم مورد استفاده خود را برای شما توضیح دهم.
از آنجا که نسخه جدید Android SDK ، Google جریان کد مجوز را بر جریان ضمنی ترجیح می دهد. بنابراین وقتی روی دستگاه Android خود کلیک می کنم ، روی دکمه ادامه می دهم با Google ، Google یک کد مجوز یک بار به من باز می گرداند و نه یک نشانه دسترسی. برای احترام به استاندارد امنیتی جدید ، کد مجوز برای یک نشانه دسترسی به سرور باید رد و بدل شود.
پیشنهاد من این است که برای پشتیبانی از این ویژگی ، یک نوع کمک هزینه جدید به نشانه تبدیل اضافه کنید.
<"grant_type": "authorization-code", "backend": "", "code": "">
با این کار با Google تماس گرفته و کد مجوز را به یک نشانه دسترسی تبدیل می کند.
- اگر کاربر در پایگاه داده وجود نداشته باشد ، ما باید آن را ایجاد کنیم. پس از آن ، ما باید نشانه برنامه Django را برگردانیم
- اگر کاربر در پایگاه داده وجود داشته باشد ، ما فقط باید نشانه برنامه Django را برگردانیم

اگر می خواهید این جریان را با فیس بوک آزمایش کنید ، در اینجا تصویری از پیکربندی برنامه من آورده شده است:
اگر می خواهید اطلاعات بیشتری در مورد فیس بوک داشته باشید ، در اینجا ویدئویی وجود دارد که جریان کد مجوز را توضیح می دهد: https://www.facebook.com/facebookfordevelopers/videos/101527956318553/ اگر می خواهید اطلاعات بیشتری در گوگل داشته باشید: https://developers. google Google.com/اقدامات/توسعه/هویت/OAUTH2-Code-Flow
اگر سوالی دارید یا می توانیم به شما در اجرای این ویژگی کمک کنیم ، به من اطلاع دهید. آیا می توانید دوباره این مسئله را باز کنید؟
سلام OMAB ، آیا می دانید این جریان در کتابخانه شما پشتیبانی می شود؟
P. S Je Parle Français Si Jamais پلتفرم معاملاتی فارکس...
ما را در سایت پلتفرم معاملاتی فارکس دنبال می کنید
برچسب :
نویسنده : مرجان محتشم
بازدید : <-PostHit->
تاريخ : پنجشنبه
8 تير
1402 ساعت: 20:05