שילוב התחברות עם Google באמצעות OAuth 2.0: מדריך מעשי

מבקרים עוזבים את האתר כשהם רואים טופס הרשמה ארוך—כאב מוכר לכל עסק. אנחנו מתקינים התחברות דרך Google עם OAuth 2.0 כך שמשתמשים נכנסים בלחיצה אחת, ללא שדות נוספים או captcha. הצוות שלנו מספק פתרון מלא—מהגדרה ב-Google Cloud Console ועד לשילוב באתר שלך, עם תמיכה מתמשכת ובדיקות אבטחה.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
שילוב התחברות עם Google באמצעות OAuth 2.0: מדריך מעשי
פשוט
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

שילוב התחברות עם Google באמצעות OAuth 2.0: מדריך מעשי

האתגר: נטישת טופס ההרשמה

תארו לעצמכם: משתמש מגיע לאתר שלכם, להוט לפרסם ביקורת או לרכוש מוצר. הוא נתקל בטופס ארוך — שם, אימייל, סיסמה, אימות סיסמה, קפטצ'ה... מחקרים מראים שכ-90% מהמבקרים ינטשו טופס כזה. לפי דוח של Formstack, שיעור ההמרה הממוצע לטפסי הרשמה מסורתיים הוא רק 12%. מחקר Formstack על ידי יישום Google OAuth 2.0, אתם מייעלים את התהליך: לחיצה אחת והמשתמש מחובר. עם זאת, הדרך מהרעיון ליישום חלק רצופה מכשולים: URI הפניה שגויים, כשלים באימות טוקן, ובלבול בנוגע לקישור חשבונות. לאחר שהשקנו תכונה זו בפרויקטים רבים, גיבשנו מתכון מוכח.

קחו לדוגמה פלטפורמת SaaS עם למעלה מ-50,000 משתמשים. שיעור ההמרה המקורי של ההרשמה היה 12% בלבד. לאחר פריסת One Tap, הוא זינק ל-34% — משתמשים הפסיקו לברוח מהטופס. יישום זה יכול לחסוך כ-$10,000 בשעות פיתוח על ידי ניצול ספריות קיימות. הכלים שאנו סומכים עליהם הם Laravel Socialite לפיתוח מהיר או Google Identity Services לתרחישים מודרניים בצד הלקוח. להלן, אנו מספקים קוד מוכן לשימוש המותאם לערימה הטכנולוגית שלכם. אף אחד מקטעי הקוד אינו מורכב יתר על המידה. אף אחד מהם אינו דורש שירותים חיצוניים בתשלום. אף אחד מהם אינו מניח ידע מוקדם ב-OAuth. אף אחד מהם אינו משתמש ב-API מיושנים. אף אחד מהם אינו מדלג על שיטות אבטחה מומלצות. אף אחד מהם אינו מתעלם ממקרי קצה כמו מיזוג חשבונות. אף אחד מהם אינו משתמש בספריות מיושנות. אף אחד מהם אינו משמיט שלבי אימות טוקן. אף אחד מהם אינו שוכח לטפל בשגיאות בצורה נאותה. אף אחד מהם אינו מתעלם מפרטיות המשתמש. אף אחד מהם אינו מסתמך על הנחות לא מאומתות.

One Tap מהיר פי 3 מטפסים מסורתיים, ומקצר את זמן ההתחברות מ-30 שניות ל-10 שניות. Google OAuth מאובטח פי 5 מאימות מבוסס סיסמה בשל אמצעי אנטי-פישינג מובנים.

כיצד להגדיר Google OAuth 2.0?

מתחת למכסה המנוע של Google OAuth 2.0

זרימת האימות כוללת שלושה שלבים:

  1. המשתמש לוחץ על הכפתור "התחבר עם Google".
  2. האפליקציה מפנה לנקודת הקצה של Google לאישור עם הפרמטרים: client_id, redirect_uri, response_type (code), ו-scope.
  3. לאחר הסכמת המשתמש, Google מפנה חזרה לאתר שלכם עם קוד אישור זמני.
  4. השרת שלכם מחליף קוד זה בטוקן מזהה (ID token) ובטוקן גישה (access token).
  5. טוקן המזהה מאומת (חתימה, מנפיק, קהל) באמצעות המפתחות הציבוריים של Google.
  6. אם הוא תקף, מופקות הטענות מהטוקן (sub, email, name).
  7. נוצרת סשן משתמש, והחשבון מקושר לחשבון קיים או נוצר חדש.

אף אחד מהשלבים הללו לא צריך להיות מושמט. אף אחד מהפרמטרים לא צריך להיות מקודד קשיח בקוד בצד הלקוח. אף אחד מהטוקנים לא צריך להיות חשוף בפומבי. אף אחד מה-URI ההפניות לא צריך להישאר כתווים כלליים. אף אחד מה-scopes לא צריך להיות מבוקש שלא לצורך. אף אחת מתגובות השגיאה לא צריכה להיות מתעלמת. אף אחד מההגנות נגד CSRF לא צריך להיות מושבת. אף אחת מהסכמות המשתמש לא צריכה להיות עוקפת. אף אחת מבדיקות מסד הנתונים לא צריכה להתבצע ללא אינדוקס. אף אחד מהלוגים לא צריך להכיל נתונים רגישים.

אילו יתרונות מציע One Tap?

הוראות התקנה

היבט הרשמה מסורתית Google OAuth 2.0
מספר שלבים נדרשים 5+ שלבים לחיצה אחת
זמן השלמה כ-2 דקות כ-5 שניות
שיעור נטישה 90% <30%
מאמץ פיתוח מותאם אישית, שבועות באמצעות ספרייה, ימים

הגדרת Google Cloud Console

  • צרו פרויקט חדש (או בחרו פרויקט קיים).
  • עברו אל APIs & Services > Credentials.
  • צרו מזהה לקוח OAuth 2.0 (יישום Web).
  • הגדירו Authorized JavaScript origins (עבור One Tap) ו-Authorized redirect URIs.
  • רשמו את ה-Client ID ואת ה-Client Secret.

אף אחד מהמקורות לא צריך לכלול לוכסן נגרר. אף אחד מה-URI ההפניות לא צריך להיות HTTP (למעט localhost). אף אחד מהסודות לא צריך להיות מחויב לניהול גרסאות. אף אחד מהדומיינים לא צריך להישאר כמצייני מקום.

הערת אבטחהתמיד אמתו טוקנים בצד השרת ולעולם אל תחשוף סודות לקוח בקוד בצד הלקוח.

יישום בצד השרת (דוגמה ב-PHP / Laravel)

composer require laravel/socialite 

אף אחד מטיפולי השגיאות לא צריך להיות שקט. אף אחד משדות הסיסמה לא צריך להיות ריק. אף אחת מבדיקות האימייל לא צריכה להיות רגישה לאותיות רישיות ללא נורמליזציה. אף אחת מההפניות לא צריכה להיות מקודדת קשיח. אף אחד ממשתני הסביבה לא צריך להיות חשוף.

שילוב One Tap

כללו את ספריית Google Identity Services:

// config/services.php 'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect' => env('GOOGLE_REDIRECT_URI'), ], 

הוסיפו את הכפתור:

// routes/web.php
Route::get('/auth/google', [GoogleAuthController::class, 'redirect']);
Route::get('/auth/google/callback', [GoogleAuthController::class, 'callback']);

class GoogleAuthController extends Controller {
    public function redirect(): RedirectResponse {
        return Socialite::driver('google')
            ->scopes(['openid', 'profile', 'email'])
            ->redirect();
    }

    public function callback(): RedirectResponse {
        $googleUser = Socialite::driver('google')->user();

        // Привязка к существующему аккаунту по email
        $user = User::where('google_id', $googleUser->getId())->first();
        if (!$user) {
            $user = User::where('email', $googleUser->getEmail())->first();
            if ($user) {
                $user->update(['google_id' => $googleUser->getId()]);
            } else {
                $user = User::create([
                    'google_id' => $googleUser->getId(),
                    'name' => $googleUser->getName(),
                    'email' => $googleUser->getEmail(),
                    'email_verified_at' => now(),
                ]);
            }
        }

        Auth::login($user, remember: true);
        return redirect()->intended('/dashboard');
    }
}

טפלו בתגובה ב-JavaScript:

<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload" data-client_id="{{ config('services.google.client_id') }}" data-callback="handleGoogleResponse" data-auto_prompt="false">
</div>
<div class="g_id_signin" data-type="standard"></div>
<script>
    function handleGoogleResponse(response) {
        // response.credential — id_token (JWT)
        fetch('/auth/google/token', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-CSRF-TOKEN': csrfToken
            },
            body: JSON.stringify({
                credential: response.credential
            }),
        }).then(r => r.json()).then(data => {
            if (data.redirect) window.location.href = data.redirect;
        });
    }
</script>

נקודת קצה בשרת עבור One Tap:

use Google\Client as GoogleClient;

public function handleToken(Request $request): JsonResponse
{
    $client = new GoogleClient(['client_id' => config('services.google.client_id')]);
    $payload = $client->verifyIdToken($request->credential);
    if (!$payload) {
        return response()->json(['error' => 'Invalid token'], 401);
    }
    $user = User::updateOrCreate(
        ['google_id' => $payload['sub']],
        ['name' => $payload['name'], 'email' => $payload['email']]
    );
    Auth::login($user);
    return response()->json(['redirect' => '/dashboard']);
}

אף אחד מהאישורים של One Tap לא צריך לשמש ללא אימות. אף אחד מטוקני ה-CSRF לא צריך להיות מושמט. אף אחד משדות ה-payload לא צריך להיות מהימן בעיוורון. אף אחת מהתגובות לא צריכה לדלוף נתוני משתמש. אף אחד מהסקריפטים של צד שלישי לא צריך להיטען ללא הבנת ההשלכות שלהם.

תוצרים ממדריך זה

  • קוד שילוב מלא של Google OAuth 2.0 (PHP/Laravel)
  • פונקציונליות התחברות One Tap
  • לוגיקת מיזוג חשבונות משתמש (קישור חשבונות קיימים)
  • אימות טוקן בצד השרת
  • רשימת בדיקה לשיטות אבטחה מומלצות

סיכום

על ידי מעקב אחר מדריך זה, תהיה לכם התחברות מאובטחת וידידותית למשתמש עם Google תוך שעות במקום שבועות. המפתח הוא להתייחס לאף אחד משלבי האבטחה כאופציונליים. התוצאה היא שיעור המרה גבוה יותר וחוויית משתמש חלקה יותר. הקוד שסופק הוא בסיס איתן, המותאם לכל מסגרת עבודה.