لاگین شدن با Github در PHP

  • آپدیت شده در تاریخ

لاگین شدن با Github در PHP

Github (گیت هاب), یک سرویس هاستینگ مبتنی بر وب برای کنترل ورژن نرم افزاری است. این سیستم نقش بسیار مهمی در توسعه اپلیکیشن های تحت وب دارد

در حال حاضر که این مقاله را می نویسم, ۲۸میلیون کاربر از تمام جهان از آن استفاده می کنند که خب تعداد کاربران ایرانی در حوزه وب و اندروید نیز بسیار زیاد است.

اگر قصد دارید که به کاربران اجازه لاگین یا ثبت نام در سایت با اکانت github خود دارد باشند به راحتی می توانید از آموزش لاگین شدن با Github در PHP استفاده کنید

قبلا لاگین شدن با twitter و gmail را در PHP آموزش دادیم. در این آموزش PHP قصد داریم از Oauth API مربوط به گیت هاب برای سیستم لاگین تحت وب خود بهره ببریم.

 

API احراز هویت GitHub به کاربران اجازه ورود (sign-in) به وبسایت توسط اکانت گیت هاب و بدون ثبت نام در سایت شما را می دهد. لاگین شدن با Github به راحتی می تواند با Oauth API مربوط به گیت هاب انجام شود.

در این آموزش, قصد داریم به شما نحوه هماهنگ سازی بخش ثبت نام سایت و لاگین شدن با Github در PHP و همچنین ذخیره کردن داده های پروفایل کاربر در دیتابیس MySQL را نشان بدیم.

 

قبل از شروع, نگاهی به ساختار فایل های آموزش لاگین شدن با Github در PHP بندازیم

لاگین شدن با Github در PHP

ساخت اپلیکیشن Oauth گیت هاب

ابتدا شما نیاز است یک اپ Oauth برای دسترسی به API گیت هاب بسازید. همچنین Client ID و Client Secret برای فراخوانی api گیت هاب نیاز داریم.

بنابراین مراحل زیر را برای دریافت اطلاعات فوق دنبال کنید

  • به اکانت GitHub لاگین کنید. در گوشه سمت بالا و راست, بر روی تصویر پروفایل کلیک و settings را انتخاب کنید.

لاگین شدن با Github در PHP

  • در صفحه تنظیمات (settings) بر روی Developer Settings در بخش چپ سایدبار کلیک کنید.

لاگین شدن با Github در PHP

  • در سایدبار چپ, روی Oauth Apps کلیک کنید. سپس یک app جدید ساخته و روی Register a new appliction کلیک کنید.

لاگین شدن با Github در PHP

  • تمام اطلاعات مورد نیاز را برای رجیستر کردن Oauth جدید خود وارد کنید و پس از اتمام روی Register application کلیک بفرمایید.

لاگین شدن با Github در PHP

  • Client ID و Client Secret مربوط به اپلیکیشن ایجاد می شود. حالا این اطلاعات را کپی کنید که بعدا در اسکریپت خود برای دسترسی به API گیت هاب استفاده خواهیم کرد.

لاگین شدن با Github در PHP

ساخت جداول دیتابیس

برای ذخیره اطلاعات پروفایل کاربر از اکانت گیت هاب, نیاز به ساخت یک جدول در دیتابیس داریم.

کد SQL زیر جدول users را با چند فیلد پایه در دیتابیس Mysql ایجاد می کند.

کلاینت Oauth برای PHP

کلاس Github_OAuth_Client یک کتابخانه PHP برای دسترسی به REST API مربوط به گیت هاب است. این کتابخانه Oauth را پشتیبانی می کند

  • getAuthorizeURL()  – ساخت آدرس URL برای احراز هویت با اکانت Github
  • getAccessToken() – تبادل کد oauth و دریافت توکن دسترسی از API گیت هاب
  • apiRequest() – ایجاد درخواست API و دریافت توکن دسترسی یا اطلاعات اکانت کاربر از API گیت هاب

فایل Github_OAuth_Client.php

برای دریافت سورس کد کامل, به بخش باکس دانلود مراجعه کنید.

کلاس User

کلاس User عملیات مربوط به دیتابیس (fetch, insert, update) را مدیریت می کند.

اطلاعات مربوط به هاست ($dbHost), نام کاربری ($dbUsername), پسورد ($dbPassword) و نام دیتابیس ($dbName) را به ازای اطلاعات ورود دیتابیس Mysql خود تغییر بدید.

  • __construct() – اتصال به دیتابیس
  • checkUser() – بررسی می کند که آیا کاربر از قبل در دیتابیس وجود دارد یا خیر. اگر بله داده ها را آپدیت می کند. در غیر اینصورت داده های پروفایل کاربر را در جدول user مربوط به دیتابیس Mysql را با PHP اضافه (insert) می کند.

فایل User.class.php

تنظیمات API گیت هاب

در فایل gitConfig.php , یک نمونه از کلاس Github_OAuth_Client را ایجاد می کنیم تا بتوانیم به API گیت هاب متصل و با SDK کار کنیم.

مقداری کلاینت آی دی ($clientID) و سکرت ($clientSecret) را بنابر اپلیکیشن گیت هاب خود تغییر بدید.

همچنین URL بازگشتی را مشخص کنید.

لاگین و دریافت اطلاعات پروفایل github

اگر قبلا کاربر با اکانت گیت هاب لاگین کرده باشد, اطلاعات پروفایل (آی دی, نام, نام کاربری, ایمیل, مکان, تصویر و لینک پروفایل) نمایش داده میشود در غیر اینصورت دکمه لاگین با github نمایان می شود.

اگر توکن دسترسی از قبل در SESSION وجود داشته باشد :

  • اطلاعات پروفایل از گیت هاب با تابع apiRequest() از کلاس Github_OAuth_Client دریافت می شود.
  • بعد این داده ها به تابع checkuser() پاس داده میشود تا در دیتابیس آپدیت یا insert شود.
  • اطلاعات کاربر در SESSION ذخیره می شود.
  • مشخصات کاربر نمایش داده میشود.

اگر پارامتر code در کویری استرینگ URL موجود باشد:

  • وضعیت کاربر اعتبارسنجی می شود.
  • توکن دسترسی با تابع getAccessToken() از کلاس Github_OAuth_Client , دریافت می شود.
  • توکن دسترسی (access token) در سیشن ذخیره می شود.

در غیر اینصورت

  • یک رشته غیرقابل حدس و تصادفی ایجاد و در سیشن (SESSION) ذخیره می شود.
  • آدرس URL احراز هویت با تابع getAuthorizeURL() از کلاس Github_OAuth_Client دریافت می شود.
  • دکمه لاگین با github در صفحه وب قرار داده می شود.

فایل index.php

خروج (logout.php)

در فایل logout.php کاربر از اکانت گیت هاب خارج می شود.

  • مقدار تمام متغییر های SESSION در PHP از بین می رود (unset)
  • کاربر به صفحه اصلی هدایت (redirect) می شود.

جمع بندی

همانطور که دیدید لاگین شدن با Github در PHP با کتابخانه ای که وجود دارد بسیار ساده است و شما به راحتی می توانید این قابلیت را به سیستم لاگین اپلیکیشن وب خود اضافه کنید و کد نمونه را بنابر نیاز خود توسعه بدید.

همچنین پیشنهاد می کنیم که دیگر اکانت های شبکه اجتماعی مانند gmail, twitter را نیز به صفحه لاگین وبسیات خود اضافه کنید.

 

امیدوارم از آموزش لاگین شدن با Github در PHP نهایت استفاده را برده باشید.

برای دانلود سورس کد کامل از باکس دانلود زیر استفاده کنید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۳)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. m ۲۳ آبان ۱۳۹۷

    درست شد ! دمت گرم داداش عشقی :):)

    پاسخ
  2. m ۲۳ آبان ۱۳۹۷

    سلام داداش خسته نباشی . من یک پلاگین دارم می نویسیم برای ورد پرس که چیز خاصی هنوز توش نیست . می خام که چیزی که مد نظرم هست اضافه بشه توی داشبورد (منوی سمت راست توی وردپرس همون جا که نوشته پیشخوان و …) بعد یک تابع فانکشن تعریف کردم و توشم از add_menu_page استفاده کردم و از add_action هم اون پایین استفاده کردم. اما چیزی که میخوام اون بغل سمت راست اضافه نمیشه . دلیلش چیه؟

    پاسخ
    1. حسن شفیعی ۲۳ آبان ۱۳۹۷

      سلام . ممنون. اضافه کردن منو به پیشخوان وردپرس بسیار ساده هستش. احتمالا یه جایی از کار رو اشتباه رفتید.

      لطفا همین مثال رو ببینید و عینا اجرا و بعد تغییرات خودتون رو لحاظ کتید.

      کد زیر همین الان اجرا و نتیجه رو در تصویر زیر میتونید ببیند.

      همچنین codex وردپرس رو حتما و حتما بررسی کنید چراکه توضیحات کامل برای توسعه قالب و پلاگین در آن موجوده
      https://codex.wordpress.org/Adding_Administration_Menus

      موفق باشید

      پاسخ
دوره های آموزشی