Einführung in das Social Login in React Native

Social Media Login – mit dem Nutzer sich mit ihren bestehenden Facebook-, Google-, Apple- oder Twitter-Konten authentifizieren können – ist in modernen mobilen Anwendungen zur Standarderwartung geworden. Für einen React Native-Entwickler kann die Integration dieser Authentifizierungsanbieter die Reibung beim Onboarding drastisch reduzieren, die Konversionsraten erhöhen und die Benutzerbindung verbessern. Anstatt Benutzer zu zwingen, noch einen weiteren Benutzernamen und ein weiteres Passwort zu erstellen, nutzt Social Login bekannte Identitätsplattformen und bietet oft zusätzliche Profildaten, die die Benutzererfahrung bereichern.

Dieser Leitfaden führt Sie durch die vollständige Implementierung von Social Login-Funktionen in Ihrer React Native-Anwendung.Wir decken Plattformregistrierung, Paketauswahl, Codeimplementierung, Token-Handling und Best Practices für die Sicherheit ab - alles zugeschnitten auf produktionsfähige Apps.

Warum Social Login implementieren?

Bevor Sie in den Code eintauchen, sollten Sie die wichtigsten Vorteile verstehen, die Social Login für Ihre mobile App bietet:

  • Schnellere Anmeldung und Anmeldung. Benutzer können sich mit einem einzigen Tippen authentifizieren, wodurch lange Registrierungsformulare eliminiert werden.
  • Höhere Conversion-Raten. Ein optimierter Login-Flow reduziert das Abbrechen während des Anmeldeprozesses.
  • Zugriff auf authentische Benutzerdaten. Mit der Benutzerberechtigung erhalten Sie validierte E-Mails, Namen und Profilbilder, die das Erlebnis personalisieren können.
  • Verbesserte Sicherheit. Die Authentifizierung wird von vertrauenswürdigen Anbietern durchgeführt, die OAuth 2.0 und OpenID Connect implementieren, wodurch das Risiko einer Passwortwiederverwendung oder schwacher Anmeldeinformationen reduziert wird.
  • Plattformübergreifende Konsistenz. Nutzer, die bereits Social Accounts nutzen, erwarten das gleiche reibungslose Erlebnis sowohl auf iOS als auch auf Android.

Voraussetzungen

Um diesem Leitfaden zu folgen, benötigen Sie:

  • Eine funktionierende React Native Entwicklungsumgebung (sowohl iOS als auch Android).
  • Entwicklerkonten auf den sozialen Plattformen, die Sie integrieren möchten (Facebook, Google, Apple, Twitter).
  • Wissen über oder und die React Native CLI oder Expo.
  • Ein grundlegendes Verständnis des OAuth 2.0-Flows.

Schritt 1: Registrieren Sie Ihre App auf jeder sozialen Plattform

Jeder Anbieter verlangt von Ihnen, dass Sie Ihre Anwendung registrieren und eindeutige Anmeldeinformationen erhalten – in der Regel eine App-ID oder eine Client-ID. Dieser Schritt ist wichtig, da der Authentifizierungsfluss auf diesen Identifikatoren beruht, um Ihre App zu validieren.

Facebook Login

  1. Gehen Sie zum Facebook Developers Portal und erstellen Sie eine neue App.
  2. Wählen Sie den App-Typ „Consumer“ oder „Business“ aus.
  3. Unter „Einstellungen > Basic notieren Sie Ihre App ID und App Secret.
  4. Fügen Sie die iOS- und Android-Plattformen hinzu. Geben Sie für iOS Ihre Bündelkennung an; für Android Ihren Paketnamen und den Hash Ihres Entwicklungsschlüssels.
  5. Aktivieren Sie das Produkt „Facebook Login und konfigurieren Sie die OAuth-Redirect-URIs.

Google Sign-In

  1. Besuchen Sie die Google Cloud Console und erstellen Sie ein neues Projekt (oder wählen Sie ein bestehendes aus).
  2. Aktivieren Sie die „Google Sign-In“-API unter „APIs & Services > Library“.
  3. Gehen Sie zu „Credentials und erstellen Sie eine OAuth 2.0 Client-ID für Ihren Anwendungstyp (iOS oder Android). Geben Sie für iOS Ihre Bundle-ID und App Store-ID (falls zutreffend) ein. Geben Sie für Android Ihren Paketnamen und den SHA-1 Signaturzertifikat-Fingerabdruck ein.
  4. Sie erhalten eine Client ID und Client Secret (verwenden Sie die Client ID in Ihrem React Native Code).

Apple Sign-In (nur iOS)

  1. Einschreiben in das Apple Developer Program.
  2. Registrieren Sie im Apple Developer-Portal Ihre App-Kennung und aktivieren Sie die Funktion "Mit Apple anmelden".
  3. Erstellen Sie eine Service-ID (wenn Sie sich auf Android oder im Web authentifizieren müssen) und erhalten Sie eine Service-ID und Key ID.
  4. Für iOS müssen Sie nur die Fähigkeit in Xcode hinzufügen - das System übernimmt den Rest.

Twitter (X) Login

  1. Navigieren Sie zur Twitter Developer Platform und erstellen Sie ein neues Projekt.
  2. Erstellen Sie eine eigenständige App unter diesem Projekt und notieren Sie den API Key und API Secret Key.
  3. Aktivieren Sie "OAuth 1.0a" oder "OAuth 2.0" (wählen Sie nach Ihren Bedürfnissen; OAuth 1.0a ist häufiger für Twitter-Login).
  4. Legen Sie die Callback-URL auf ein benutzerdefiniertes Schema fest, das Ihre React Native App verarbeiten kann, z. B. .

Schritt 2: Installieren Sie die erforderlichen Pakete

Je nachdem, ob Sie bare React Native oder Expo verwenden, unterscheiden sich die Pakete. Unten finden Sie die am häufigsten verwendeten Bibliotheken für jeden Anbieter.

Facebook

Für bare React Native: und laufen für iOS. Für Expo: Verwenden Sie einen Entwicklungs-Build mit dem Modul.

Google

Für bare React Native: Für Expo: Verwenden Sie den (verwalteter Workflow) oder den bare Flow mit demselben Paket.

Apple

Für React Native: funktioniert dieses Paket nur unter iOS; auf Android müssen Sie einen webbasierten Ansatz verwenden.

Twitter (X)

Eine beliebte Wahl ist , nach der Installation , und Sie müssen den Consumer Key und das Secret zu Ihren und Dateien hinzufügen.

Schritt 3: Plattformspezifische Einstellungen konfigurieren

iOS Konfiguration

  • Öffnen Sie und fügen Sie die CFBundleURLTypes] für jeden Anbieter hinzu (z. B. yourapp:// für Twitter, fb{APP ID}:// für Facebook usw.).
  • Fügen Sie für die Google-Anmeldung die REVERSED CLIENT ID (in Ihrem gefunden) als URL-Schema hinzu.
  • Aktivieren Sie für die Apple-Anmeldung die Funktion "Mit Apple anmelden" in Xcode unter "Unterschreiben & Fähigkeiten" Ihres Ziels.
  • Führen Sie aus, um native Abhängigkeiten zu verknüpfen.

Android Konfiguration

  • In füge Einträge für Facebook hinzu (, ).
  • Erstellen Sie einen -Eintrag mit .
  • Legen Sie für Google die -Datei (von der Firebase Console heruntergeladen) in ab.
  • Fügen Sie für Twitter die TWITTER CONSUMER KEY und TWITTER CONSUMER SECRET in als Metadaten hinzu.
  • Stellen Sie sicher, dass Ihr das richtige hat (normalerweise 21 oder höher).

Schritt 4: Implementieren Sie den Login-Flow

Jetzt schreiben wir den Kern-Code von React Native. Die folgenden Beispiele zeigen typische Implementierungen für jeden Anbieter. Alle Beispiele gehen davon aus, dass Sie die nativen Seiten bereits korrekt konfiguriert haben.

Facebook Login Beispiel

import React from 'react';
import { View, Button, Alert } from 'react-native';
import {
 LoginManager,
 AccessToken,
 GraphRequest,
 GraphRequestManager,
} from 'react-native-fbsdk-next';

const FacebookLogin = () => {

 const fbLogin = async () => {
 try {
 const result = await LoginManager.logInWithPermissions(['public_profile', 'email']);

 if (result.isCancelled) {
 console.log('Login cancelled');
 return;
 }

 const data = await AccessToken.getCurrentAccessToken();
 if (!data) throw new Error('No access token returned');

 // Fetch user profile
 const infoRequest = new GraphRequest(
 '/me',
 { parameters: { fields: { string: 'id,name,email,picture' } } },
 (error, result) => {
 if (error) {
 console.error('Graph request error:', error);
 } else {
 console.log('User profile:', result);
 // Store token and profile in secure storage, then navigate
 }
 },
 );
 new GraphRequestManager().addRequest(infoRequest).start();

 } catch (error) {
 Alert.alert('Facebook Login Error', error.message);
 }
 };

 return (
 <View>
 <Button title="Login with Facebook" onPress={fbLogin} />
 </View>
 );
};

export default FacebookLogin;

Google Sign-In Beispiel

import React, { useEffect } from 'react';
import { Button, Alert } from 'react-native';
import { GoogleSignin, statusCodes } from '@react-native-google-signin/google-signin';

const GoogleLogin = () => {

 useEffect(() => {
 GoogleSignin.configure({
 webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com', // from Google Cloud Console
 offlineAccess: false, // set to true if you need server auth
 });
 }, []);

 const signIn = async () => {
 try {
 await GoogleSignin.hasPlayServices();
 const userInfo = await GoogleSignin.signIn();
 console.log('User info:', userInfo);
 // Access token is in userInfo.idToken; store it securely
 } catch (error) {
 if (error.code === statusCodes.SIGN_IN_CANCELLED) {
 // user cancelled
 } else if (error.code === statusCodes.IN_PROGRESS) {
 // operation already in progress
 } else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
 Alert.alert('Google Sign‑In', 'Play Services not available');
 } else {
 Alert.alert('Google Sign‑In Error', error.message);
 }
 }
 };

 return <Button title="Login with Google" onPress={signIn} />;
};

export default GoogleLogin;

Apple Sign-In Beispiel

import React from 'react';
import { Button, Platform, Alert } from 'react-native';
import { appleAuth } from '@invertase/react-native-apple-authentication';

const AppleLogin = () => {

 const onAppleButtonPress = async () => {
 if (Platform.OS !== 'ios') {
 Alert.alert('Not available', 'Apple Sign‑In is only available on iOS.');
 return;
 }

 try {
 const appleAuthRequestResponse = await appleAuth.performRequest({
 requestedOperation: appleAuth.Operation.LOGIN,
 requestedScopes: [appleAuth.Scope.FULL_NAME, appleAuth.Scope.EMAIL],
 });

 if (!appleAuthRequestResponse.identityToken) {
 throw new Error('Apple Sign‑In failed - no identity token returned');
 }

 const { identityToken, user, fullName } = appleAuthRequestResponse;
 console.log('Apple token:', identityToken);
 // Store token and user details (fullName may be null on subsequent logins)
 } catch (error) {
 Alert.alert('Apple Sign‑In Error', error.message);
 }
 };

 return <Button title="Sign in with Apple" onPress={onAppleButtonPress} />;
};

export default AppleLogin;

Twitter (X) Login Beispiel

import React from 'react';
import { Button, Alert } from 'react-native';
import { TwitterSignin } from 'react-native-twitter-signin';

const TwitterLogin = () => {

 const signInWithTwitter = async () => {
 try {
 await TwitterSignin.init(
 'YOUR_CONSUMER_KEY',
 'YOUR_CONSUMER_SECRET',
 );
 const { authToken, authTokenSecret } = await TwitterSignin.logIn();
 console.log('Twitter tokens:', { authToken, authTokenSecret });
 // You can now exchange these for a session or use them directly
 } catch (error) {
 Alert.alert('Twitter Login Error', error.message);
 }
 };

 return <Button title="Login with Twitter" onPress={signInWithTwitter} />;
};

export default TwitterLogin;

Schritt 5: Sicher behandeln und speichern Token

Nach einem erfolgreichen Login erhalten Sie ein access-Token (und manchmal ein Refresh-Token oder ein ID-Token). Diese Token sind sensibel – behandeln Sie sie wie Passwörter. Speichern Sie sie niemals im Klartext oder in AsyncStorage, was unverschlüsselt ist. Verwenden Sie stattdessen eine sichere Schlüsselbund-/Schlüsselspeicherbibliothek:

Beispiel mit :

import * as Keychain from 'react-native-keychain';

// Store token
await Keychain.setGenericPassword('social_token', accessToken, { service: 'facebook' });

// Retrieve token later
const credentials = await Keychain.getGenericPassword({ service: 'facebook' });
const token = credentials ? credentials.password : null;

Schritt 6: Verwalten von Benutzersitzung und Logout

Sobald das Token sicher gespeichert ist, können Sie seine Gültigkeit beim Start der App überprüfen. Wenn das Token existiert und nicht abgelaufen ist, können Sie den Anmeldebildschirm überspringen. Implementieren Sie eine Anmeldefunktion, die sowohl den sicheren Speicher als auch die native Sitzung löscht:

import { LoginManager } from 'react-native-fbsdk-next';
import { GoogleSignin } from '@react-native-google-signin/google-signin';

const logout = async (provider) => {
 switch (provider) {
 case 'facebook':
 await LoginManager.logOut();
 break;
 case 'google':
 await GoogleSignin.signOut();
 break;
 // etc.
 }
 // Remove token from secure storage
 await Keychain.resetGenericPassword({ service: provider });
};

Fehlerbehandlung und Edge Cases

Reale Anwendungen müssen gängige Fehlerszenarien anmutig behandeln:

  • Netzwerkfehler: Zeigen Sie eine benutzerfreundliche Nachricht und erlauben Sie erneutes Versuchen.
  • Der Benutzer storniert: Nichts tun oder das Ereignis protokollieren, ohne einen Fehler zu zeigen.
  • Provider-Probleme: Der Server des Anbieters ist möglicherweise ausgefallen; Implementieren Sie ein Timeout und ein Fallback für einen anderen Anbieter.
  • Token-Verfall: Erkenne, wenn ein Token abgelaufen ist (z.B. 401 von deinem Backend) und fordere den Benutzer auf, sich erneut zu authentifizieren.
  • Permissions geändert: Wenn der Benutzer Berechtigungen später widerruft, sollte Ihre App dies erledigen, indem Sie eine erneute Zustimmung verlangen.

Verwenden Sie eine dedizierte Fehlerbehandlungskomponente, die Fehler bei einem Remotedienst (wie Sentry) protokolliert und gleichzeitig die Benutzeroberfläche reaktionsschnell hält.

Best Practices für Sicherheit

Über die sichere Lagerung hinaus sollten Sie diese Sicherheitsmaßnahmen berücksichtigen:

  • Nur HTTPS verwenden: Die gesamte Kommunikation mit Provider-APIs und Ihrem Backend muss verschlüsselt sein.
  • Validieren Sie ID-Token auf Ihrem Server: Für Google und Apple überprüfen Sie die Signatur, den Aussteller und die Zielgruppe des Tokens in Ihrem Backend, bevor Sie eine Sitzung erstellen. Bibliotheken wie und können helfen.
  • Implementieren Sie PKCE (Proof Key for Code Exchange): Wenn Sie den OAuth-Flow in einer WebView ausführen, verwenden Sie PKCE, um Abhörangriffe zu verhindern.
  • Hardcode Secrets: Speichern Sie API-Schlüssel und Geheimnisse in Umgebungsvariablen oder einem Secret Management Service, nicht im App Bundle.
  • Regelmäßig SDKs aktualisieren: Veraltete Bibliotheken können bekannte Schwachstellen enthalten.
  • Bieten Sie die Möglichkeit, die Verknüpfung von Social Accounts zu entschlüsseln: Benutzer möchten möglicherweise einen Social Provider trennen. Geben Sie eine Benutzeroberfläche an, um den Zugriff auf die App zu widerrufen und das Token aus Ihrem Backend zu löschen.

Auswahl zwischen mehreren Anbietern

Die meisten Produktions-Apps bieten mindestens drei Optionen: Apple (für iOS-Apps, die andere Social Logins verwenden), Google und Facebook. Twitter (X) ist weniger verbreitet, aber für bestimmte Zielgruppen wertvoll. Berücksichtigen Sie die Demografie Ihrer App und die Daten, die Sie benötigen. Vermeiden Sie überwältigende Benutzer mit zu vielen Tasten; ein sauberer Bildschirm mit drei oder vier bekannten Anbietern funktioniert am besten.

Social Login testen

Das Testen von OAuth-Flows in React Native kann schwierig sein, da viele Anbieter ein echtes Gerät oder einen signierten Release-Build benötigen.

  • Verwenden Sie die Facebook Test App – generieren Sie Testbenutzer in der Facebook Developer-Konsole und simulieren Sie damit das Login.
  • Verwenden Sie für Google einen test OAuth-Client in der Google Cloud Console mit einer Test-Benutzer-E-Mail.
  • Für Apple können Sie auf einem echten Gerät mit einer Sandbox Apple ID testen.
  • Führen Sie Ihre App im Release-Modus (oder mit einem signierten APK / IPA) aus, da viele Anbieter Umleitungen auf signierte Builds beschränken.
  • Schreibe Unit-Tests für deine Login-Funktionen, indem du die SDKs verspottest (z.B. mit Jest).

Schlussfolgerung

Die Implementierung von Social Media Login in Ihrer React Native Anwendung ist eine wirkungsvolle Funktion, die die Benutzererfahrung und -sicherheit verbessert. Durch die sorgfältige Registrierung Ihrer App auf jeder Plattform, die Konfiguration nativer Dateien und die Verwendung der richtigen Pakete können Sie einen nahtlosen Authentifizierungsfluss erstellen. Behandeln Sie Token immer als sensible Daten, speichern Sie sie in verschlüsselten Containern und validieren Sie sie auf Ihrem Backend. Mit den Beispielen und Best Practices in diesem Handbuch sind Sie bereit, Facebook, Google, Apple und Twitter Login in Ihr nächstes React Native Projekt zu integrieren.

Für weitere Informationen lesen Sie bitte die offizielle React Native Networking Dokumentation und die Facebook Login Dokumentation Halten Sie Ihre SDKs auf dem neuesten Stand, testen Sie sie auf realen Geräten und stellen Sie immer die Sicherheit der Benutzerdaten an die erste Stelle.