عضویت و لاگین در سایت با گوگل

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

عضویت و لاگین در سایت با گوگل

ساخت سیستم عضویت و لاگین در سایت با گوگل با Api و کتابخانه client گوگل بسیار آسان است بدین صورت است که خیلی از سایت ها هستند که توی بخش عضویت شما میتونید با ایدی گوگل خودتون عضو بشید ,اینگونه که شما روی یه دکمه کلیک میکنید و سپس به صفحه گوگل میرید و یوزر پسوورد خودتون رو میزنید , بعد از تایید کردن به صفحه سایت برمیگردید و میبینید که لاگین شدید  به این روش میگویند federated login که شما با عضو بودن توی گوگل میتونید توی سایت های دیگه عضو باشید .

برای ایجاد فرم عضویت و لاگین در سایت با گوگل , باید مراحل زیر رو انجام بدیم:

 

مرحله اول: ایجاد پروژه در گوگل

شما ابتدا باید یک پروژه در گوگل ایجاد کنید , برای این کار به آدرس Google Developer Console بروید ( البته این سرویس گوگل برای ایران تحریم است و باید از نرم افزارهای تغییر آی پی استفاده کنید) و مثل تصاویر زیر اقدام به ایجاد یک پروژه ی جدید کنید

عضویت و لاگین در سایت با گوگل

 

بعد از ایجاد پروژه اون رو باز کنید و روی enable and manage APIs کلیک کنید و منتظر بمونید تا صفحه لود بشه :

عضویت و لاگین در سایت با گوگل

حالا برید روی سربرگ overview از سمت چپ صفحه کلیک کنید:

عضویت و لاگین در سایت با گوگل

حالا روی لینک Google+ API کلیک کنید و دکمه ی enable رو بزنید و بعد در سمت چپ صفحه روی Credentials کلیک کنید و بعدش روی New credentials کلیک کنید و از منوی باز شده OAuth client ID رو انتخاب کنید

عضویت و لاگین در سایت با گوگل

عضویت و لاگین در سایت با گوگل

عضویت و لاگین در سایت با گوگل

حالا Web Application رو انتخاب کنید و فیلد های مربوطه رو پر کنید

عضویت و لاگین در سایت با گوگل

در قسمت مربوط به فیلد Name نام اپلیکیشن یا برنامه ی خودتون رو بنویسید (یه نام فرضی تایپ کنید که مرتبط با پروژه ی شما باشه) و در قسمت Authorized JavaScript origins نام دامنه ی سایت خودتون یا http://localhost رو وارد کنید و در قسمت Authorized redirect URIs ادرسی رو وارد کنید که میخواید بعد از لاگین شدن در گوگل , کاربران به اونجا فرستاده بشن.

عضویت و لاگین در سایت با گوگل

حالا ما به Client ID و Client secret و Redirect URI نیاز داریم , پروژه ی خودتون رو باز کنید تا این مشخصات رو ببینید , اونا رو کپی کنید و یه جایی نگهدارید و ادامه اموزش رو ببینید( دقت کنید در اینجا redirect URI در کدی که من دارم مینویسم ادرس فایل login.php است )

مرحله ی دوم : ساخت فایلی که درخواست لاگین شدن رو به گوگل بفرسته

یک فایل با نام google_request.php بسازید و دستورات زیر رو توش قرار بدید:

تابعی که ما در بالا ایجاد کردیم چهارتا مقدار به عنوان ورودی میگیره که به صورت زیر توضیح میدم:

method : روش ارسال داده ها داده ها به گوگل رو مشخص میکنه , اگه ۱ باشه داده ها به صورت POST و اگه ۰ باشه داده ها به صورت GET به گوگل ارسال میشن.

url : ادرس مورد نظر ما برای ارسال داده ها هست که در اینجا باید ادرس گوگل باشه

header : هدرها یا پروتکل های HTTP رو مشخص میکنه

data : داده های مورد نظر برای ارسال رو مشخص میکنه

مرحله ی سوم : ساخت فایلی برای وارد کردن مشخصات پروژه ی گوگل خودمون , تا بتونیم از API گوگل استفاده کنیم:

یک فایل با نام config.php ایجاد کنید و دستورات زیر رو توش بنویسید

در کد بالا قسمت هایی که نوشتم do not change رو به هیچ وجه تغییر ندید. در قسمت هایی که به صورت xxxx گذاشتم تنظیماتی که از قسمت پروژه ی گوگل دریافت کردید رو وارد کنید که شامل redirect_uri و client_id و client_secret میشه , همچنین در اخر میتونید سایز عکسی که از یوزر دریافت میکنید رو به صورت image_size مشخص کنید. من در اینجا براتون ۱۰۰ پیکسل رو گذاشتم.

مرحله چهارم : در این مرحله صفحه ی لاگین رو میسازیم

در این صفحه اطلاعات کاربر بعد از اینکه در اکانت گوگل خودش لاگین کرد نمایش داده میشه و شما میتونید از این اطلاعات که از گوگل دریافت شده استفاده کنید و کاربر رو عضو سایت خودتون کنید.

حالا یه فایل با نام login.php بسازید و دستورات زیر رو توی اون بنویسید:

 

مرحله ی پنجم : ساخت صفحه ای برای نمایش اطلاعات دریافت شده از گوگل

یه فایل با نام index.php بسازید و دستورات زیر رو توش بنویسید

که نوشته Login with Google plus و وقتی که کاربر روی لینک کلیک میکنه به صفحه ی گوگل میره و بعد از لاگین کردن توی گوگل دوباره به همین صفحه میاد و عکس و مشخصاتش نمایش داده میشه  به همین راحتی.

نکته : دقت کنید در اینجا redirect URI همون فایل login.php است و باید در تنظیمات گوگل خودتون نیز ادرس فایل login.php رو بزارید تا بعد از لاگین شدن کاربر اطلاعات از طرف گوگل به این فایل ارسال بشه.

برای دانلود پروژه عضویت و لاگین در سایت با گوگل از قسمت زیر اقدام کنید

موفق باشید

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

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

  1. علی ۱۶ اسفند ۱۳۹۹

    سلام
    وارد گوگل میشه اما وقتی اطلاعات را بر می‌گردونه این خروجی را میدهد
    [error] => invalid_client [error_description] => Unauthorized

    پاسخ
    1. حسن شفیعی ۱۶ اسفند ۱۳۹۹

      سلام. احتمالا کلید ها رو اشتباه زدید

      پاسخ
  2. rezamms ۲۲ بهمن ۱۳۹۹

    سلام
    من سورس آخر آموزش رو دانلود کردم و در سایتم هم آپلود کردم
    اما مقدار ایمیل بازگشتی NULL هست و هیچی نشون نمیده!
    https://rezamms.ir/login/index.php

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

      سلام. api گوگل رو طبق آموزش پیش برید و دریافت و داخل سورس جایگزین کنید

      پاسخ
      1. rezamms ۲۲ بهمن ۱۳۹۹

        دقیقا مثل آموزش جلو رفتم
        اما کار نمیده

        پاسخ
  3. ایمان ۲۰ اسفند ۱۳۹۸

    سلام
    توی نکته گفتین که اطلاعات به login ارسال میشه ولی نمایش اطلاعات توی index.php هست.
    من هر دو رو انجام دادم و وارد گوگل میشه و گوگل رو انتخاب میکنم برمیگرده به صفحه ی index.php و چیزی عوض نشده فقط ادرس url با get یک چیزهایی اضافه شده و توی login.php هم تنظیم کردم بازم فرقی نکرد و هیچی نمایش داده نشد.
    بررسی کنید ممنون میشم.

    پاسخ
    1. حسن شفیعی ۲۰ اسفند ۱۳۹۸

      سلام. همه چیز اوکی هست و شما کل فرایند رو اشتباه متوجه شدید. بهتره یکبار دیگر مطالعه کنید ببینید هدف این آموزش چیه و چه چیزی در دیتابیس ذخیره شده.
      اگر در url چیزی برگشت داده شده پس اوکی هست
      موفق باشید.

      پاسخ
      1. ایمان ۲۰ اسفند ۱۳۹۸

        چجوری اطلاعات برگشت داده شده رو ببینم؟
        میخوام برای ورود یا ثبت نام از این روش استفاده کنم که خودکار ایمیل وریفای بشه ، میشه از این استفاده کرد؟

        پاسخ
      2. حسن شفیعی ۲۰ اسفند ۱۳۹۸

        مقدار post برگشت داده شده رو var_dump کنید.
        بله میتونید استفاده کنید

        پاسخ
      3. ایمان ۲۰ اسفند ۱۳۹۸

        یه چیز دیگه.
        وقتی به سایت برگشت داده میشه Login With Google API خالیه و چیزی نمایش داده نمیشه.
        ولی مقدارین با گت در url هست ولی نمیتونم کاری انجام بدم.

        پاسخ
  4. مهدی ۳۰ اردیبهشت ۱۳۹۸

    ببخشید این افزونه Subscribe & Download رو نصب کردم
    میخوام فقط به سرویس های جیمیل و یاهو ایمیل بفرسته و اگر غیر این بود بگه ایمیل نا معتبر باید چکاری انجام بدم؟

    پاسخ
    1. حسن شفیعی ۳۰ اردیبهشت ۱۳۹۸

      سلام.
      این شرط را به شرط های خط احتمالا ۱۵۰۰ تا ۱۵۲۰ باشه در فایل اصلی افزونه subscribe-download.php اضافه کنید
      elseif (!preg_match(“/@(gmail|yahoo)\.com/i”, $email)) {
      $error .= ‘ایمیل نامعتبر’;
      }

      موفق باشید.

      پاسخ
  5. امیرحسین آقاجانی ۲۹ اسفند ۱۳۹۶

    سلام ممنون از آموزش خوبتون! من به نتیجه رسیدم!
    اما عکسه نمیاد!
    اسکریپت شما هم تست کردم عکس نمیاد!
    من عکس هم دارم اما نیومد
    ممنون میشم راهنمایی کنید

    پاسخ
    1. حسن شفیعی ۲۹ اسفند ۱۳۹۶

      سلام . خوشحالم مفید واقع شده .

      مشکل حادی نیست کافیه تصویر مورد نظر رو درست آدرس دهی کنید .

      موفق باشید.

      پاسخ
      1. امیرحسین آقاجانی ۲۹ اسفند ۱۳۹۶

        میشه یکم راهنمایی کنید ؟
        ممنون میشم

        پاسخ
      2. حسن شفیعی ۲۹ اسفند ۱۳۹۶

        بله حتما.

        عملا نباید مشکلی باشه . شما هنگام برگشت مقدار $user_info رو var_dump کنید و ببینید خانه image به چه صورت مقدار دهی شده تا آدرس عکس و اطلاعات رو بتونید جزئی تر بررسی کنید که آیای مقداری برگشت داده شده یا نه

        موفق باشید

        پاسخ
      3. امیرحسین آقاجانی ۲۹ اسفند ۱۳۹۶

        https://amiraghajani.com/os/auth/

        مقداری که بر میگردونه خالیه 🙁

        پاسخ
      4. حسن شفیعی ۲۹ اسفند ۱۳۹۶

        تست کردم مشکلی نداره . و مقدار url در image رو برگشت میده.

        https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=520

        موفق باشید

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