Home / Android-Entwicklung / Erste Schritte mit dem Facebook für Android SDK

Erste Schritte mit dem Facebook für Android SDK

Viele mobile Apps ermöglichen dem Benutzer das Posten von Inhalten auf gängigen Social Media-Plattformen wie Facebook, Twitter und LinkedIn.

Diese Art des sozialen Teilens kann eine großartige Möglichkeit sein, für Ihre App zu werben und die Benutzerfreundlichkeit zu verbessern Indem Sie eine Verbindung zwischen Ihrer Anwendung und den bevorzugten sozialen Netzwerken des Benutzers herstellen.

Um das Teilen in sozialen Netzwerken zu fördern, haben viele der wichtigsten sozialen Plattformen Tools entwickelt, die sich speziell an App-Entwickler richten – und Facebook ist da keine Ausnahme!

In diesem Artikel , Ich zeige Ihnen, wie Sie Ihre Android-Anwendungen mit Facebook für Android SDK (Software Development Kit) mit Facebook integrieren können. Sobald Sie mit dem offiziellen Facebook SDK verbunden sind, haben Sie Zugriff auf eine Vielzahl von Funktionen. In diesem Artikel konzentrieren wir uns jedoch auf zwei der beliebtesten Funktionen: Authentifizierung bei Facebook und Social Sharing.

Am Ende dieses Artikels haben Sie eine Anwendung erstellt, mit der Benutzer ihre Identität anhand ihrer Facebook-Anmeldeinformationen authentifizieren und dann den Inhalt Ihrer App freigeben können, indem Sie ihn auf Facebook veröffentlichen.

 Fügen Sie Ihrer Facebook-Integration hinzu App mit dem Facebook-SDK

Was ist das Facebook für Android-SDK?

Jede Social-Media-Plattform möchte die Benutzerbindung fördern, und die Freigabe von Inhalten aus einer Reihe von Quellen ist eine leistungsstarke Möglichkeit, um sie am Laufen zu halten Ihre Plattform.

Das offizielle Facebook SDK für Android unterstützt Sie bei der Erstellung von Apps, die sich in Facebook integrieren lassen, und bietet Zugriff auf verschiedene Schlüsselfunktionen, einschließlich Facebook-Authentifizierung sowie Lesen und Schreiben der APIs der Plattform.

Facebook SDK für Android macht Kompromisse bei folgenden Komponenten:

  • Analytics. Bietet Zugriff auf aggregierte und anonymisierte Daten, sodass Sie analysieren können, wie Benutzer Ihre App verwenden.
  • Anmelden. Ermöglicht Benutzern, sich mit ihren Facebook-Anmeldeinformationen bei Ihrer App anzumelden. Wenn der Benutzer bereits bei der mobilen Facebook-App für Android angemeldet ist, muss er seinen Benutzernamen und sein Kennwort nicht erneut eingeben, um sich bei Ihrer Anwendung zu authentifizieren. Sobald ein Benutzer bei Facebook angemeldet ist, können Sie Informationen abrufen und Aktionen in seinem Namen ausführen, z. B. das Bild seines Facebook-Profils in Ihrer App anzeigen oder Statusaktualisierungen veröffentlichen.
  • Account Kit. Ermöglicht Benutzern die Authentifizierung ihrer Identität nur anhand ihrer Telefonnummer oder E-Mail-Adresse. Für das Account Kit ist kein Facebook-Konto erforderlich. Dies ist eine praktikable Authentifizierungsmethode für alle Benutzer, die sich nicht bei Facebook angemeldet haben.
  • Anzeigen. Wenn Sie Ihre Anwendung monetarisieren möchten, können Sie mit dieser Komponente Anzeigenkampagnen erstellen und ausführen.
  • App-Ereignisse. Ermöglicht das Verfolgen einer Reihe von Benutzeraktionen und -ereignissen in Ihrer App. Mithilfe dieser Informationen können Sie die Effektivität Ihrer Handy-App-Anzeigen bewerten oder die Nutzer ermitteln, die am wahrscheinlichsten auf Ihre Anzeigen reagieren.
  • App-Links. Stellen Sie sich vor, ein Nutzer hat gerade einige Inhalte Ihrer App auf Facebook gepostet. Mit App-Links können Sie festlegen, was passiert, wenn jemand mit diesem Inhalt interagiert. Beispielsweise werden sie möglicherweise an die Google Play-Liste Ihrer App oder an die Website Ihres Unternehmens weitergeleitet. Wenn jemand Ihre App bereits auf seinem Gerät installiert hat, können Sie alternativ darauf reagieren, indem Sie Ihre Anwendung starten und sie zu einer Aktivität mit Bezug zu diesem Inhalt weiterleiten.
  • Graph API. Durch die Integration in die Facebook Graph-API können Sie Daten von der Facebook-Plattform abrufen und Daten hinzufügen, z. B. neue Storys veröffentlichen und Fotos hochladen.

Welche Vorteile bietet die Facebook-Integration?

Für Entwickler: Facebook für Android SDK bietet mehrere Vorteile.

1. Nahtlose Anmeldung

Abhängig von Ihrer Anwendung müssen Benutzer möglicherweise ihre Identität authentifizieren, bevor sie auf bestimmte Funktionen zugreifen können. Auch wenn für Ihre Bewerbung nur eine E-Mail-Adresse und ein Passwort erforderlich sind, wird es immer einen Prozentsatz von mobilen Nutzern geben, die dies für zu umständlich halten und Ihre Bewerbung beenden.

Es gibt mehrere Gründe, warum wir mit weitaus geringerer Wahrscheinlichkeit fertig werden ein Registrierungsformular auf einem mobilen Gerät im Vergleich zu unserem Laptop oder Computer. Erstens verwenden wir Smartphones und Tablets in der Regel unterwegs und häufig unter Zeitdruck. Beispielsweise verbringen Sie einige Minuten mit dem Telefonspielen, während Sie in der Arztpraxis, im Supermarkt oder bei Ihnen warten lokale Bushaltestelle. Keines dieser Szenarien ist ideal zum Ausfüllen eines In-App-Formulars!

Darüber hinaus kann das Eingeben auf der kleinen virtuellen Tastatur Ihres Mobilgeräts zeitaufwändig und frustrierend sein, insbesondere für Benutzer mit manuellen Problemen oder für Personen, die anfällig sind zu Tippfehlern. Das Eingeben eines Kennworts, das eine Mischung aus Symbolen, Zahlen sowie Groß- und Kleinbuchstaben enthält, kann sich auf Ihrem Smartphone oder Tablet wie ein großer Aufwand anfühlen.

Indem Sie Ihrer Anwendung die Facebook-Anmeldung hinzufügen, können Sie ein In-App-Registrierungsformular ersetzen , mit Authentifizierung per Mausklick.

 Ihre Benutzer können ihre Identität mithilfe ihrer Facebook-Anmeldeinformationen authentifizieren.

Durch Verringern des Zeit- und Arbeitsaufwands für die Authentifizierung der Benutzeridentifikation sollten Sie eine Erhöhung feststellen in der Anzahl der Personen, die den Registrierungsprozess Ihrer App erfolgreich abschließen.

2. Steigert den Datenverkehr und die Nutzerinteraktion

Eine weitere wichtige Funktion des Facebook-SDK besteht darin, dass Nutzer den Inhalt Ihrer Anwendung freigeben können. Freigegebene Inhalte werden in der Facebook-Zeitleiste des Benutzers und im Newsfeed seiner Freunde angezeigt, wodurch Ihre App möglicherweise einem völlig neuen Publikum zugänglich wird.

Im Idealfall werden die Facebook-Freunde des Benutzers in irgendeiner Weise mit diesen freigegebenen Inhalten in Kontakt treten – ob dies nun bedeutet oder nicht Notieren Sie sich den Namen Ihrer Anwendung oder tippen Sie auf den freigegebenen Inhalt. In diesem Lernprogramm wird dies zwar nicht näher erläutert, Sie können jedoch mithilfe der App-Links-Komponente von Facebook festlegen, was passiert, wenn eine Person mit diesen freigegebenen Inhalten interagiert. Beispielsweise können Sie sie zum Google Play-Eintrag Ihrer App weiterleiten.

Wenn ein Nutzer Wenn Ihre Anwendung bereits installiert ist, können Sie sogar jeden freigegebenen Inhalt mit einer anderen Aktivität in Ihrer App verknüpfen. Das Erstellen einer Verknüpfung zwischen gemeinsam genutzten Inhalten und einigen relevanten Inhalten innerhalb der App kann eine effektive Möglichkeit sein, den Datenverkehr zu steigern und Benutzer erneut einzubinden, die sonst möglicherweise das Interesse an Ihrer App verloren haben.

3. Verbessert die Benutzererfahrung

Auch wenn Sie die Inhalte Ihrer App einfacher freigeben, kann dies sich positiv auf die Benutzererfahrung auswirken. Stellen Sie sich vor, jemand hat Stunden investiert, um einen Highscore in einem Handyspiel zu erzielen, und möchte, dass jeder davon erfährt! Sie können die Benutzererfahrung verbessern, indem Sie den Highscore auf Facebook veröffentlichen.

Die Integration des Facebook-SDK in Ihre Anwendung kann auch der erste Schritt zum Entwerfen komplexerer Features oder zum Verbessern der vorhandenen Funktionen Ihrer App sein. Wenn Sie beispielsweise eine Messaging-App erstellen, können Sie den Benutzer auffordern, die Kontaktinformationen für alle Freunde und Familienmitglieder manuell einzugeben, oder Sie können eine Funktion zum automatischen Importieren erstellen relevante Daten aus der Facebook-Freundesliste.

Während es unwahrscheinlich ist, dass jeder einzelne Facebook-Freund des Benutzers seinen vollständigen Namen, seine Adresse und seine Telefonnummer in seinem Profil hat, wird diese Funktion den Betrag reduzieren Informationen, die der Benutzer manuell eingeben muss, verbessern die Benutzerfreundlichkeit.

Erste Schritte: Erstellen eines Facebook-Entwicklerkontos

In diesem Artikel erstellen wir eine Anwendung, mit der der Benutzer seine Identität authentifizieren kann Verwenden Sie ihre Facebook-Anmeldeinformationen, und geben Sie dann einen Teil des Inhalts Ihrer Anwendung in Form einer Facebook-Statusaktualisierung frei.

Erstellen Sie zunächst eine Android-App mit der Vorlage "Leere Aktivität". Sobald wir unsere App haben, müssen wir ihr eine Facebook-App-ID zuweisen, für die ein Facebook-Entwicklerkonto erforderlich ist.

Die Erstellung von Facebook-Entwicklerkonten ist kostenlos. Wenn Sie also noch nicht bei Facebook für Entwickler registriert sind, gehen Sie wie folgt vor: [19659039] Gehen Sie zur Facebook for Developers-Website.

  • Wählen Sie in der oberen rechten Ecke "Anmelden" aus.
  • Geben Sie Ihren Facebook-Benutzernamen und Ihr Kennwort ein und folgen Sie den Anweisungen auf dem Bildschirm, um Ihr Konto zu erstellen.
  • Registrieren Ihrer App bei Facebook

    Als Nächstes müssen Sie eine Facebook-App-ID für dieses Projekt erstellen:

    • Auf der Facebook-Website für Entwickler finden Sie einen vollständigen Abschnitt, der Ihnen hilft, Facebook in Ihre Android-App zu integrieren. Erleichtern Sie sich also das Leben Machen Sie sich selbst ein Bild und fahren Sie mit Quick Start for Android fort.
    • Geben Sie bei Aufforderung Ihre Facebook-Anmeldedaten ein.
    • Geben Sie Ihrer Facebook-App im Textfeld einen eindeutigen Namen.
    • Wählen Sie bei Erscheinen „Create New Facebook-App-ID. “[19659048] Neue Facebook-App-ID erstellen ” width=”840″ height=”265″ srcset=”https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android.png 840w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-300×95.png 300w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-768×242.png 768w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-16×5.png 16w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-32×10.png 32w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-28×9.png 28w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-56×18.png 56w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-64×20.png 64w, https://cdn57.androidauthority.net/wp-content/uploads/2019/06/create-new-facebook-app-id-android-634×200.png 634w” sizes=”(max-width: 840px) 100vw, 840px”/>

      • Geben Sie einen Anzeigenamen für Ihre Anwendung und Ihre E-Mail-Adresse ein.
      • Klicken Sie auf „App-ID erstellen“.
      • Als Nächstes müssen wir das Facebook-SDK hinzufügen als Wechseln Sie zurück zu Android Studio und öffnen Sie Ihre build.gradle-Datei. Weisen Sie Ihr Projekt an, die neueste Version des Facebook SDK zu kompilieren, indem Sie dem Abschnitt "Abhängigkeiten" Folgendes hinzufügen:
      
      
      
      
      
      
      
      
      
      
      
      
      dependencies {
         Implementierung fileTree (dir: 'libs', include: ['*.jar'] 
      
      
      
      
      
      
      
      
      
      
      )
         Implementierung 'androidx.appcompat: appcompat: 1.0.2'
      
      // Füge das Folgende hinzu //
      
         Implementierung 'com.facebook.android:facebook-android-sdk:4.33.0'
         Implementierung 'androidx.constraintlayout: constraintlayout: 1.1.3'
         testImplementation 'junit: junit: 4.12'
         androidTestImplementation 'androidx.test.ext: junit: 1.1.0'
         androidTestImplementation 'androidx.test.espresso: espresso-core: 3.1.1'
         Implementierung 'androidx.fragment: fragment: 1.0.0'
      }
      • Wenn Sie dazu aufgefordert werden, synchronisieren Sie Ihre Änderungen.
      • Wechseln Sie zurück zu Ihrem Webbrowser, und auf der QuickStart für Android-Webseite sollte eine Facebook-App-ID angezeigt werden, die Sie Ihrem Android-Projekt hinzufügen können. Kopieren Sie diesen Wert und wechseln Sie dann wieder zu Android Studio.
      • Öffnen Sie die Datei strings.xml Ihres Projekts und erstellen Sie eine Zeichenfolge „facebook_app_id“, die auf Ihre eindeutige Facebook-App-ID verweist:
       REPLACE-WITH-YOUR- EINZIGARTIGER WERT 
      • Für die Kommunikation mit Facebook ist ein Internetzugang erforderlich. Öffnen Sie daher Ihr Manifest und fügen Sie Folgendes hinzu:
      • Fügen Sie Folgendes hinzu, während wir uns im Manifest befinden Element:
      
      
      
      
             
      
      
      
             
      
      
      
      
      
         
      
      • Kehren Sie zu Ihrem Webbrowser zurück und scrollen Sie zum Ende der Kurzanleitung für Android. Sie sollten einen Abschnitt "Erzählen Sie uns von Ihrem Android-Projekt" finden.

       Geben Sie den Paketnamen Ihres Projekts und den Standardnamen der Aktivitätsklasse ein.

      • Geben Sie den Paketnamen Ihres Android-Projekts ein, den Sie am oberen Rand finden Manifest-Datei.
      • Geben Sie im Feld "Standardname der Aktivitätsklasse" den vollständig qualifizierten Klassennamen der Aktivität ein, die die Deep-Link-Funktion in Ihrer App ausführt. In meinem Projekt lautet die Deep-Link-Aktivität MainActivity.
      • Klicken Sie auf "Weiter".
      • An dieser Stelle werden Sie gewarnt, dass dieser Paketname bei Google Play nicht registriert ist. Unser Projekt wurde noch nicht veröffentlicht! Sie können diese Warnung ignorieren, indem Sie auf "Diesen Paketnamen verwenden" klicken.

      Nachverfolgen von Installationen, Starts und Google Play-Käufen

      Zu diesem Zeitpunkt haben Sie die Option, "Kaufereignisse in der App automatisch unter Android anmelden" zu deaktivieren.

      Wenn Sie das Facebook SDK verwenden, werden bestimmte Ereignisse und Aktionen der App automatisch von Facebook Analytics aufgezeichnet, sofern Sie die Ereignisprotokollierung nicht explizit deaktivieren.

      Standardmäßig werden alle folgenden Ereignisse und Aktionen protokolliert und anschließend in angezeigt Das Insights-Dashboard Ihrer App:

      • App-Installationen. Das erste Mal, wenn ein Benutzer Ihre Anwendung aktiviert, oder das erste Mal, wenn Ihre App auf einem neuen Gerät gestartet wird.
      • App-Start. Jemand startet Ihre Anwendung.
      • Kaufen. Ein Nutzer schließt einen In-App-Kauf über Google Play ab. Wenn Sie eine alternative Zahlungsplattform verwenden, werden In-App-Käufe nicht protokolliert, es sei denn, Sie geben Ihren eigenen Ereigniscode für den Kauf an. Wenn Sie bereits In-App-Käufe mit einer alternativen Methode protokollieren, beachten Sie, dass die Protokollierung des Facebook SDK zu doppelten Einträgen führen kann. Wenn Sie bereits App-Käufe verfolgen, sollten Sie den Schieberegler "Ereignisse beim App-Kauf automatisch auf Android anmelden" aktivieren und in die Position "Aus" bringen.

      Um zusätzliche Ereignisse und Aktionen aufzuzeichnen, aktivieren Sie out Codeless App Events.

      So generieren Sie einen Entwicklungsschlüssel-Hash

      Um die Authentizität der Interaktionen zwischen Ihrer Anwendung und Facebook sicherzustellen, fordert der Schnellstart für Android den Android-Schlüssel-Hash für Ihre Entwicklungsumgebung an.

      Wenn Sie MacOS ausführen, gehen Sie wie folgt vor:

      • Öffnen Sie ein neues Terminalfenster.
      • Kopieren Sie den folgenden Befehl in das Terminal, und fügen Sie ihn ein:
       keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binary | openssl base64 
      • Drücken Sie die Eingabetaste auf Ihrer Tastatur.

      Wenn Sie Windows verwenden, gehen Sie wie folgt vor:

      • Starten Sie die Eingabeaufforderung.
      • Kopieren Sie den folgenden Befehl, und fügen Sie ihn ein:
       keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% . android  debug.keystore | openssl sha1 -binary | openssl base64 
      • Drücken Sie die Eingabetaste auf Ihrer Tastatur.

      Diese beiden Befehle generieren einen 28-stelligen Schlüssel-Hash, der für Ihre Entwicklungsumgebung eindeutig ist. Kopieren Sie diesen Wert, wechseln Sie zurück zum QuickStart für Android-Handbuch, und fügen Sie ihn in das Feld "Schlüssel-Hash" ein.

       Generieren Sie einen Hash für die Freigabe des Schlüssels und fügen Sie ihn zum QuickStart für Android-Handbuch hinzu

      Wenn an diesem Projekt mehrere Personen arbeiten, müssen Sie für jede einzelne Entwicklungsumgebung einen Schlüssel-Hash generieren.

      Wenn Sie Ihren Schlüssel-Hash eingegeben haben, klicken Sie auf "Weiter" Eine Meldung mit dem Titel "Abgeschlossen" wird angezeigt. Herzlichen Glückwunsch, Sie haben den Grundstein für die Erstellung einer Android-Anwendung gelegt, die mit Facebook integriert werden kann!

      Authentifizierung bei Facebook: Hinzufügen eines LoginButton

      Die erste Funktion, die wir implementieren werden, ist die Authentifizierung bei Facebook.

      Sie Mit dem im Facebook SDK enthaltenen LoginButton können Sie einer Android-App eine Facebook-Authentifizierung hinzufügen. LoginButton ist eine benutzerdefinierte Ansichtsimplementierung von Button, die die im LoginManager verfügbaren Funktionen zusammenfasst. Jedes Mal, wenn der Benutzer auf den LoginButton tippt, startet LoginManager den Anmeldevorgang mit den angeforderten Lese- oder Veröffentlichungsberechtigungen.

      Wir erstellen einen LoginButton, indem wir unserem Layout ein Element „com.facebook.login.widget.LoginButton“ hinzufügen. Während ich meine activity_main.xml-Datei bearbeite, werde ich auch eine reguläre Schaltfläche hinzufügen, über die der Benutzer schließlich seinen Facebook-Status aktualisieren kann.

      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      

      Arbeiten mit dem Facebook-SDK: Authentifizierung und Freigabe

      In Für unsere MainActivity müssen wir:

      • den Facebook-Authentifizierungsprozess einleiten und das Ergebnis, einschließlich eventuell auftretender Fehler, verarbeiten.
      • Inhalte für den Benutzer zum Teilen bereitstellen.
      • Einen Mechanismus zum Teilen dieser Inhalte bereitstellen.

      Login mit Facebook implementieren

      Der erste Schritt zur Bearbeitung der Facebook-Login-Antwort besteht darin, eine Verbindung zwischen dem LoginButton in unserem Layout und dem Facebook-SDK herzustellen:

              LoginManager.getInstance (). RegisterCallback (callbackManager,
                     new FacebookCallback  () {

      FacebookCallback verarbeitet jeden möglichen Anmeldeversuch mit den folgenden Methoden:

      • onSuccess. Der Anmeldeversuch war erfolgreich.
      • onCancel. Der Benutzer hat den Anmeldeversuch abgebrochen.
      • onError. Ein Fehler ist aufgetreten.

      Wir müssen jede dieser Methoden implementieren:

      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
              @Override
                 public void onSuccess (LoginResult loginResult) {
      
      //Machen//
                 }
      
                 @Override
                 public void onCancel () {
      
      //Machen//
                 }
      
                 @Override
                 public void onError (FacebookException-Ausnahme) {
      
      //Machen//
      
                 } 

      Als Nächstes müssen wir eine Instanz von CallbackManager mit der CallbackManager.Factory.create-Methode initialisieren. Dieser Rückruf ist für die Weiterleitung von Anrufen an das Facebook SDK und unsere registrierten Rückrufe verantwortlich:

      
      
      
      
      
          @Override
         public void onCreate (Bundle savedInstanceState) {
             super.onCreate (savedInstanceState);
      
      // Einen CallbackManager erstellen //
      
             callbackManager = CallbackManager.Factory.create (); 

      Durch Antippen der Anmeldeschaltfläche wird eine neue Aktivität gestartet, die ein Ergebnis zurückgibt. Um dieses Anmeldeergebnis zu verarbeiten, müssen wir unsere onActivityResult-Methode überschreiben und ihre Parameter an die onActivityResult-Methode von CallbackManager übergeben.

      
      
      
      
      
      
          @Override
         protected void onActivityResult (int requestCode, int resultCode, intent data) {
             super.onActivityResult (requestCode, resultCode, data);
      
      // OnActivityResult an den CallbackManager weiterleiten //
      
             callbackManager.onActivityResult (requestCode, resultCode, data);
         } 

      Anmeldestatus überprüfen

      Es kann immer nur eine Person bei unserer Anwendung angemeldet sein. LoginManager legt den AccessToken und das Profil für den Benutzer fest, der derzeit bei Facebook angemeldet ist, und das Facebook SDK speichert diese Informationen zu Beginn jeder Sitzung in gemeinsamen Einstellungen.

      Mit können wir überprüfen, ob jemand derzeit bei Facebook angemeldet ist AccessToken.getCurrentAccessToken () oder Profile.getCurrentProfile ().

      Bei jedem Start unserer Anwendung lade ich AccessToken.getCurrentAccessToken und überprüfe deren Gültigkeit:

      
      
      
      
      
      
          private boolean hasPublishActionPermission () {
                 AccessToken.isCurrentAccessTokenActive () zurückgeben
                         &&
      
      // Auf Veröffentlichungsberechtigungen prüfen //
      
      AccessToken.getCurrentAccessToken (). GetPermissions (). Includes ("publish_actions");
         } 

      Gemeinsam nutzbare Inhalte erstellen

      Nachdem wir uns jetzt bei Facebook angemeldet haben, müssen wir einige Inhalte bereitstellen, die unsere Benutzer freigeben können, indem wir sie auf Facebook veröffentlichen.

      Das Facebook-SDK unterstützt freigegebene Inhalte im Formular von Links oder Multimedia-Inhalten wie Fotos oder Videos, aber um die Sache einfacher zu gestalten, geben wir eine einzige URL frei.

      Mit ShareLinkContent.Builder können wir eine Instanz unseres Links erstellen:

          ShareLinkContent linkContent = new ShareLinkContent.Builder () 

      Als Nächstes müssen wir den Inhalt des Links mithilfe von setContentURL beschreiben:

              .setContentUrl (Uri.parse ("https://www.androidauthority.com/")) 

      Wir können unseren Link erstellen:

              .build (); 

      Sie können Ihren freigegebenen Inhalten auch ein Bild, eine Beschriftung, eine Beschreibung und andere Attribute hinzufügen.

      ShareDialog: Kommunikation mit der nativen Facebook-App [19659008] Mit dem ShareDialog von Facebook können Benutzer den Inhalt Ihrer Anwendung auf ihrer Timeline veröffentlichen. Profil eines Freundes oder einer Facebook-Gruppe. ShareDialog unterstützt das Post-Modell von Facebook in vollem Umfang, sodass Benutzer Freunde und Orte in den freigegebenen Inhalten Ihrer Anwendung markieren können.

      ShareDialog ist eine der einfachsten Möglichkeiten, die Facebook-Freigabe in Ihrer App zu implementieren, und bietet außerdem eine native Freigabeerfahrung. Wenn der ShareDialog ausgelöst wird, leitet das Facebook SDK den Benutzer automatisch zur nativen Facebook für Android-App weiter, in der er seinen Beitrag wie gewohnt bearbeiten und veröffentlichen kann. Sobald der Benutzer seinen Beitrag veröffentlicht hat, leitet das Facebook-SDK ihn zurück zu Ihrer App.

      Da diese Erfahrung in der nativen Facebook-Anwendung stattfindet, funktioniert ShareDialog auch dann ordnungsgemäß, wenn der Benutzer Ihre App nicht mit seinem Facebook verbunden hat Konto – vorausgesetzt, sie haben Facebook für Android auf ihrem Gerät installiert!

      Wenn der Benutzer die native Facebook-App nicht installiert hat, greift das Facebook-SDK auf den Feed-Dialog zurück, der das Web startet -basierte Version von Facebook im Standard-Webbrowser des Geräts. Wenn Ihre Anwendung zum Feed-Dialogfeld zurückkehrt und der Benutzer nicht in seinem Webbrowser bei Facebook angemeldet ist, wird er aufgefordert, seine Facebook-Anmeldeinformationen einzugeben.

      Erstellen Sie zunächst eine ShareDialog-Instanz:

      
      
      
      
      
      
      
          private ShareDialog shareDialog;
      ...
      ...
      ...
      
           shareDialog = new ShareDialog (this);
             shareDialog.registerCallback (
                     callbackManager,
                     shareCallback); 

      Anschließend können wir diesen Dialog anzeigen:

      
      
      
              ShareLinkContent linkContent = new ShareLinkContent.Builder ()
                     .setContentUrl (Uri.parse ("https://www.androidauthority.com/"))
                     .bauen();
             if (canDisplayShareDialog) {
                 shareDialog.show (linkContent); 

      Die abgeschlossene MainActivity

      Nachdem Sie alle oben genannten Aufgaben ausgeführt haben, sollte Ihre MainActivity ungefähr so ​​aussehen:

      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
       import android.app.AlertDialog;
      android.content.Intent importieren;
      Import android.net.Uri;
      android.os.Bundle importieren;
      android.view.View importieren;
      import android.widget.Button;
      androidx.fragment.app.FragmentActivity importieren;
      
      import com.facebook.AccessToken;
      com.facebook.CallbackManager importieren;
      import com.facebook.FacebookAuthorizationException;
      importieren com.facebook.FacebookCallback;
      import com.facebook.FacebookException;
      importieren com.facebook.Profile;
      import com.facebook.login.LoginManager;
      import com.facebook.login.LoginResult;
      import com.facebook.share.ShareApi;
      importieren com.facebook.share.Sharer;
      importieren Sie com.facebook.share.widget.ShareDialog;
      importieren Sie com.facebook.share.model.ShareLinkContent;
      
      public class MainActivity erweitert FragmentActivity {
      
         private final String PENDING_ACTION_KEY =
                 "com.jessicathornsby.facebooksample: PendingAction";
      
         private boolean canDisplayShareDialog;
      
         private Button postStatusUpdate;
         private CallbackManager callbackManager;
         private PendingAction pendingAction = PendingAction.NONE;
      
      // Deklariere eine private ShareDialog Variable //
      
         private ShareDialog shareDialog;
      
      // Das Ergebnis der Aktion "Teilen" //
      
         privater FacebookCallback  shareCallback = neuer FacebookCallback 
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
       () {
      
      // Der Benutzer hat die Freigabe abgebrochen //
      
             @Override
             public void onCancel () {
      //Machen//
             }
      
      //Ein Fehler ist aufgetreten//
      
             @Override
             public void onError (FacebookException-Fehler) {
      //Machen//
      
             }
      
      // Der Inhalt wurde erfolgreich geteilt //
      
             @Override
             public void onSuccess (Sharer.Result-Ergebnis) {
      
      //Machen//
      
                  }
      
         };
      
         private enum PendingAction {
             KEINER,
             POSTSTATUS
         }
      
         @Override
         public void onCreate (Bundle savedInstanceState) {
             super.onCreate (savedInstanceState);
      
      // Eine Instanz von CallbackManager initialisieren //
      
             callbackManager = CallbackManager.Factory.create ();
      
      // Einen Rückruf registrieren, um dem Benutzer zu antworten //
      
             LoginManager.getInstance (). RegisterCallback (callbackManager,
                     neuer FacebookCallback 
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
       () {
      
                         @Override
                         public void onSuccess (LoginResult loginResult) {
                             handlePendingAction ();
                             updateUI ();
                         }
      
                         @Override
                         public void onCancel () {
                             if (pendingAction! = PendingAction.NONE) {
                                 showAlert ();
                                 pendingAction = PendingAction.NONE;
                             }
                             updateUI ();
                         }
      
                         @Override
      
      // Ausnahme behandeln //
      
                         public void onError (FacebookException-Ausnahme) {
                             if (pendingAction! = PendingAction.NONE
                                     && Ausnahmeinstanz von FacebookAuthorizationException) {
                                 showAlert ();
                                 pendingAction = PendingAction.NONE;
                             }
                             updateUI ();
                         }
      
      // Fehlermeldung anzeigen //
      
                         private void showAlert () {
                             neuer AlertDialog.Builder (MainActivity.this)
                                     .setTitle (R.string.cancelled)
                                     .setMessage (R.string.FBexception)
                                     .setPositiveButton (R.string.ok, null)
                                     .Show();
                         }
                     });
      
      // Erstelle den ShareDialog //
      
             shareDialog = new ShareDialog (this);
      
      // Rückrufanmeldung //
      
             shareDialog.registerCallback (
                     callbackManager,
                     shareCallback);
      
             if (savedInstanceState! = null) {
                 String name = savedInstanceState.getString (PENDING_ACTION_KEY);
                 pendingAction = PendingAction.valueOf (name);
              }
      
              setContentView (R.layout.activity_main);
      
              postStatusUpdate = (Button) findViewById (R.id.postStatusUpdate);
      
      // Hören Sie auf den Benutzer, der auf die Schaltfläche postStatusUpdate tippt //
      
              postStatusUpdate.setOnClickListener (neuer View.OnClickListener () {
                  public void onClick (Ansicht Ansicht) {
                      onClickPostStatus ();
                  }
              });
      
      // Link-Rückruf teilen //
      
             canDisplayShareDialog = ShareDialog.canShow (
                     ShareLinkContent.class);
         }
      
         @Override
         protected void onSaveInstanceState (Bundle outState) {
             super.onSaveInstanceState (outState);
      
             outState.putString (PENDING_ACTION_KEY, pendingAction.name ());
         }
      
         @Override
      
      // Überschreibe die onActivityResult Methode //
      
         protected void onActivityResult (int requestCode, int resultCode, intent data) {
             super.onActivityResult (requestCode, resultCode, data);
      
      // Login-Ergebnis an den CallbackManager übergeben //
      
             callbackManager.onActivityResult (requestCode, resultCode, data);
         }
      
         private void updateUI () {
             boolean enableButtons = AccessToken.isCurrentAccessTokenActive ();
             postStatusUpdate.setEnabled (enableButtons || canDisplayShareDialog);
      
             }
      
         private void handlePendingAction () {
             PendingAction beforePendingAction = pendingAction;
             pendingAction = PendingAction.NONE;
      
             switch (previousPendingAction) {
                 case NONE:
                     brechen;
                 case POST_STATUS:
                     postStatusUpdate ();
                     brechen;
             }
         }
      
      // Auf Veröffentlichungsberechtigungen prüfen //
      
         privater boolescher hasPublishActionPermission () {
             AccessToken.isCurrentAccessTokenActive () zurückgeben
              &&
      
      // Laden Sie AccessToken.getCurrentAccessToken //
      
      AccessToken.getCurrentAccessToken (). GetPermissions (). Includes ("publish_actions");
         }
      
         Private Void Publish (PendingAction-Aktion, boolescher Wert allowNoToken) {
             if (AccessToken.isCurrentAccessTokenActive () || allowNoToken) {
                 pendingAction = action;
                 handlePendingAction ();
             }
      
         }
      
         private void onClickPostStatus () {
             publish (PendingAction.POST_STATUS, canDisplayShareDialog);
         }
      
         private void postStatusUpdate () {
             Profile profile = Profile.getCurrentProfile ();
      
      // Eine Instanz unseres Links erstellen //
      
             ShareLinkContent linkContent = neuer ShareLinkContent.Builder ()
      
      // Beschreibe den Inhalt des Links //
      
                     .setContentUrl (Uri.parse ("https://www.androidauthority.com/"))
      
      // Baue den Link auf //
      
                     .bauen();
      
      // Zeige den ShareDialog //
      
             if (canDisplayShareDialog) {
                 shareDialog.show (linkContent);
             } else if (profile! = null && hasPublishActionPermission ()) {
                 ShareApi.share (linkContent, shareCallback);
             } else {
                 pendingAction = PendingAction.POST_STATUS;
             }
         }
      
      } 

      Erstellen unserer Facebook-Fehlermeldung

      Wir verweisen auf einige Zeichenfolgenressourcen in unserer MainActivity-Klasse, die angezeigt werden, wenn ein Fehler auftritt. Öffnen Sie die Datei strings.xml und fügen Sie Folgendes hinzu:

       Abgebrochen 
       OK 
       FacebookAuthorizationException. 

      Testen der Facebook-Integration

      Um die Facebook-Integration Ihres Projekts zu testen, müssen Sie Die native Facebook für Android-App, die auf Ihrem Gerät installiert ist.

      Wenn Sie ein virtuelles Android-Gerät (AVD) verwenden, müssen Sie den Google Play-Store laden und Facebook genau wie gewohnt auf Ihr AVD herunterladen ein physikalisches Gerät. Anschließend müssen Sie die Facebook-App für Android starten und Ihre Facebook-Anmeldedaten eingeben.

      Sobald Sie ein kompatibles Android-Gerät oder AVD haben:

      • Installieren Sie dieses Projekt auf Ihrem Android-Gerät.
      • Sobald die Anwendung geladen wird Tippen Sie auf die Schaltfläche "Weiter mit Facebook".
      • Nach einigen Augenblicken sollten Ihr Facebook-Profilbild und der vollständige Name angezeigt werden. Wenn diese Informationen korrekt sind, klicken Sie auf "Weiter". Sie sind jetzt bei Facebook angemeldet.
      • Um Inhalte für Facebook freizugeben, tippen Sie auf die Schaltfläche "Statusaktualisierung veröffentlichen". Die native Facebook für Android-App sollte jetzt mit einem neuen Status angezeigt werden, der bereits für Sie erstellt wurde.

       Mit dem Facebook-SDK können Sie den Inhalt Ihrer App gemeinsam nutzen.

      Sie können das fertige Projekt von herunterladen GitHub.

      Beachten Sie, dass Sie die Datei strings.xml des Projekts öffnen und IHRE-APP-ID-HIER mit Ihrer eigenen Facebook-App-ID aktualisieren müssen.

      Möchten Sie Ihre App veröffentlichen? Generieren eines Release-Key-Hashs

      Wenn Sie Ihre App veröffentlichen möchten, müssen Sie sie mit einem Release-Key digital signieren, bevor Sie sie auf Google Play hochladen. Wenn Ihre App jedoch das Facebook-SDK verwendet, müssen Sie auch einen Release-Key-Hash generieren und ihn zu Ihren Facebook-App-ID-Einstellungen hinzufügen. Wenn Sie diesen Schritt überspringen, funktioniert möglicherweise keine der Facebook SDK-Funktionen Ihrer App ordnungsgemäß.

      Starten Sie das Terminal und führen Sie den folgenden Befehl aus, um einen Release-Key-Hash unter macOS zu generieren:

       keytool -exportcert - alias  -keystore  | openssl sha1 -binary | openssl base64 

      Vergessen Sie nicht, durch Ihren eigenen Release-Schlüssel-Alias ​​und durch den Pfad zu Ihrem Keystore zu ersetzen.

      Wenn Sie ein Windows-Benutzer sind, öffnen Sie die Eingabeaufforderung und führen Sie sie aus den folgenden Befehl:

       keytool -exportcert -alias  -keystore  | PATH_TO_OPENSSL_LIBRARY  bin  openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY  bin  openssl base64 

      Wieder müssen Sie und mit Ihren eigenen Werten aktualisieren.

      Geben Sie bei Aufforderung das Kennwort ein, das Sie zum Erstellen Ihres Freigabeschlüssels verwendet haben.

      Sobald Sie Ihren Release-Key-Hash haben, können Sie ihn zu den Android-Einstellungen Ihrer Facebook-App-ID hinzufügen:

      • Gehen Sie in Ihrem Webbrowser zur Facebook-Seite für Entwickler "Alle Apps".
      • Wählen Sie das entsprechende Facebook Ihrer Android-App aus App. Wenn Sie sich nicht sicher sind, welche Facebook-App mit Ihrer Android-Anwendung verknüpft ist, überprüfen Sie den in Ihrer Datei strings.xml definierten Wert für "App-ID" – die richtige Facebook-App hat genau denselben Wert.
      • Auf der linken Seite Wählen Sie im Menü „Einstellungen“ und dann „Grundlegend“.

       Vergessen Sie nicht, einen Release-Key-Hash zu generieren, bevor Sie Ihre App veröffentlichen.

      • Scrollen Sie zum Abschnitt „Android“. [19659040] Suchen Sie das Feld "Schlüssel-Hashes" und kopieren Sie Ihren Release-Schlüssel-Hash in dieses Feld.
      • Klicken Sie auf "Änderungen speichern".

      Sie sollten nun in der Lage sein, Ihre App ohne Probleme bei Google Play zu veröffentlichen.

      Zusammenfassung

      In diesem Artikel haben wir eine Android-Anwendung erstellt, die über das offizielle Facebook für Android-SDK in Facebook integriert wird, und anschließend mit diesem SDK zwei der beliebtesten Facebook-Funktionen implementiert: Authentifizierung und Social Sharing .

      Sobald Sie das Facebook SDK zu Ihrem Android-Projekt hinzugefügt haben, haben Sie Der Zugriff auf zahlreiche zusätzliche Facebook-Funktionen, einschließlich der Analyse der Nutzerdemografien, der Erstellung gezielter Anzeigen für mobile Apps und der Verwendung der Graph-API für den Datenaustausch mit der Facebook-Plattform. Wenn Sie das Facebook SDK weiter erkunden möchten, finden Sie in den Dokumenten zu Facebook für Entwickler viele zusätzliche Informationen.

      Planen Sie, das Facebook SDK in Ihren eigenen Android-Anwendungen zu verwenden? Lass es uns in den Kommentaren unten wissen!

    About AndroidWeltEditor

    Check Also

    An introduction to the Google Play Console for Android Developers

    If you want to be a successful app developer, learning how to code and build …

    Leave a Reply

    Your email address will not be published. Required fields are marked *