

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Facebook als Identitätspools einrichten (IdP)
<a name="facebook"></a>

Amazon Cognito Cognito-Identitätspools arbeiten mit Facebook zusammen, um eine Verbundauthentifizierung für Ihre Anwendungsbenutzer bereitzustellen. In diesem Abschnitt wird erklärt, wie Sie Ihre Anwendung bei Facebook als IdP registrieren und einrichten.

## Einrichten von Facebook
<a name="set-up-facebook"></a>

Registrieren Sie Ihre Anwendung bei Facebook, bevor Sie Facebook-Benutzer authentifizieren und mit Facebook interagieren. APIs

Das [Facebook Developer-Portal](https://developers.facebook.com/) führt Sie durch die Einrichtung Ihrer Anwendung. Führen Sie dieses Verfahren durch, bevor Sie Facebook in Ihren Amazon-Cognito-Identitäten-Pool integrieren:

**Anmerkung**  
Der Amazon Cognito Cognito-Identitätspoolverbund ist nicht mit [Facebook Limited Login](https://developers.facebook.com/docs/facebook-login/limited-login) kompatibel. Weitere Informationen darüber, wie Sie die Facebook-Anmeldung für iOS einrichten, ohne die für die eingeschränkte Anmeldung festgelegten Berechtigungen zu überschreiten, finden Sie unter [Facebook-Anmeldung für iOS — Schnellstart](https://developers.facebook.com/docs/facebook-login/ios) bei *Meta for Developers*.

**Einrichten von Facebook**

1. Melden Sie beim [Facebook Developer-Portal](https://developers.facebook.com/) mit Ihren Facebook-Anmeldeinformationen an.

1. Wählen Sie im Menü **Apps** die Option **Neue App hinzufügen** aus.

1. Wählen Sie eine Plattform aus und schließen Sie den Schnellstart-Prozess ab.

### Android
<a name="set-up-facebook-1.android"></a>

Weitere Informationen zur Integration der Facebook-Anmeldung in Android-Apps finden Sie unter [Facebook-Handbuch Erste Schritte](https://developers.facebook.com/docs/android/getting-started).

### iOS – Objective-C
<a name="set-up-facebook-1.ios-objc"></a>

Weitere Informationen zur Integration der Facebook-Anmeldung in iOS Objective-C-Apps finden Sie unter [Facebook-Handbuch Erste Schritte](https://developers.facebook.com/docs/ios/getting-started/).

### iOS – Swift
<a name="set-up-facebook-1.ios-swift"></a>

Weitere Informationen zur Integration der Facebook-Anmeldung in iOS Swift-Apps finden Sie unter [Facebook-Handbuch Erste Schritte](https://developers.facebook.com/docs/ios/getting-started/).

### JavaScript
<a name="set-up-facebook-1.javascript"></a>

Weitere Informationen zur Integration von JavaScript Web-Apps mit der Facebook-Anmeldung finden Sie im [Facebook-Leitfaden „Erste Schritte](https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.3)“.

## Konfigurieren eines Identitätsanbieters in der Amazon-Cognito-Identitätspool-Konsole
<a name="configure-the-external-provider-in-the-amazon-cognito-console"></a>

Gehen Sie wie folgt vor, um Ihren Identitätsanbieter zu konfigurieren.

**So fügen Sie einen neuen Facebook-Identitätsanbieter (IdP) hinzu**

1. Wählen Sie **Identitätspools** in der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) aus. Wählen Sie einen Identitätspool.

1. Wählen Sie die Registerkarte **Datenzugriff** aus.

1. Wählen Sie **Identitätsanbieter hinzufügen** aus.

1. Wählen Sie **Facebook**.

1. Geben Sie die **App-ID** des OAuth Projekts ein, das Sie bei [Meta for Developers erstellt haben](https://developers.facebook.com/). Weitere Informationen finden Sie unter [Facebook-Anmeldung](https://developers.facebook.com/docs/facebook-login/) in den *Dokumenten zu Meta for Developers*.

1. Um die Rolle festzulegen, die Amazon Cognito bei der Ausgabe von Anmeldeinformationen an Benutzer anfordert, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die **Rolleneinstellungen**.

   1. Sie können Benutzern dieses IdPs die **Standardrolle** zuweisen, die Sie bei der Konfiguration Ihrer **authentifizierten Rolle** eingerichtet haben, oder die **Rolle mit Regeln wählen**.

     1. Wenn Sie **Rolle mit Regeln wählen** ausgewählt haben, geben Sie die Quell-**Anforderung** aus der Benutzerauthentifizierung, den **Operator**, mit dem Sie die Anforderung vergleichen möchten, den **Wert**, der zu einer Übereinstimmung mit dieser Rollenauswahl führt, und die **Rolle** ein, die Sie zuweisen möchten, wenn die **Rollenzuweisung** übereinstimmt. Wählen Sie **Weitere hinzufügen** aus, um eine zusätzliche Regel zu erstellen, die auf einer anderen Bedingung basiert.

     1. Wählen Sie eine **Rollenauflösung**. Wenn die Anforderungen Ihres Benutzers nicht Ihren Regeln entsprechen, können Sie Anmeldeinformationen verweigern oder Anmeldeinformationen für Ihre **Authentifizierte Rolle** ausgeben.

1. Um die Prinzipal-Tags zu ändern, die Amazon Cognito Benutzern zuweist, wenn es Anmeldeinformationen an Benutzer ausgibt, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die **Attribute für die Zugriffskontrolle**.

   1. Um keine Prinzipal-Tags anzuwenden, wählen Sie **Inaktiv** aus.

   1. Wählen Sie **Standardzuordnungen verwenden**, um Prinzipal-Tags auf der Grundlage von `sub`- und `aud`-Anforderungen anzuwenden.

   1. Um Ihr eigenes benutzerdefiniertes Schema von Attributen für Prinzipal-Tags zu erstellen, wählen Sie **Benutzerdefinierte Zuordnungen verwenden**. Geben Sie dann einen **Tag-Schlüssel** ein, den Sie aus jeder **Anforderung** beziehen möchten, die Sie in einem Tag repräsentieren möchten.

1. Wählen Sie **Änderungen speichern** aus.

## Verwenden von Facebook
<a name="using-facebook"></a>

### Android
<a name="using-facebook-1.android"></a>

Wenn Sie die Facebook-Authentifizierung hinzufügen möchten, integrieren Sie zunächst das Facebook-SDK anhand der Anleitungen im [Facebook-Leitfaden](https://developers.facebook.com/docs/android) in Ihre Anwendung. Fügen Sie dann die Schaltfläche [https://developers.facebook.com/docs/facebook-login/android](https://developers.facebook.com/docs/facebook-login/android) Ihrer Android-Benutzeroberfläche hinzu. Das Facebook-SDK verwendet ein Sitzungsobjekt, um seinen Status nachzuverfolgen. Amazon Cognito verwendet das Zugriffstoken von diesem Sitzungsobjekt, um den Benutzer zu authentifizieren, die eindeutige Kennung zu generieren und dem Benutzer bei Bedarf Zugriff auf andere AWS Ressourcen zu gewähren.

Nachdem Sie den Benutzer mit dem Facebook-SDK authentifiziert haben, fügen Sie das Sitzungs-Token zu den Amazon-Cognito-Anmeldeinformationen des Anbieters hinzu.

Facebook-SDK 4.0 oder höher:

```
Map<String, String> logins = new HashMap<String, String>();
logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken());
credentialsProvider.setLogins(logins);
```

Facebook-SDK vor 4.0:

```
Map<String, String> logins = new HashMap<String, String>();
logins.put("graph.facebook.com", Session.getActiveSession().getAccessToken());
credentialsProvider.setLogins(logins);
```

Die Facebook-Anmeldung initialisiert eine Singleton-Sitzung im SDK. Das Facebook-Sitzungsobjekt enthält ein OAuth Token, das Amazon Cognito verwendet, um AWS Anmeldeinformationen für Ihren authentifizierten Endbenutzer zu generieren. Darüber hinaus verwendet Amazon Cognito das Token, um in Ihrer Benutzer-Datenbank zu überprüfen, ob ein Benutzer mit dieser speziellen Facebook-Identität existiert. Wenn der Benutzer bereits vorhanden ist, gibt API gibt den vorhandenen Bezeichner zurück. Andernfalls gibt die API einen neuen Bezeichner zurück. Das Client-SDK legt Bezeichner automatisch im Cache des lokalen Geräts ab.

**Anmerkung**  
Nachdem Sie die Login-Zuordnung eingerichtet haben, rufen Sie die Anmeldeinformationen `get` an `refresh` oder rufen Sie sie ab. AWS 

### iOS – Objective-C
<a name="using-facebook-1.ios-objc"></a>

Wenn Sie die Facebook-Authentifizierung hinzufügen möchten, integrieren Sie zunächst das Facebook-SDK anhand der Anleitungen im [Facebook-Leitfaden](https://developers.facebook.com/docs/ios) in Ihre Anwendung. Fügen Sie dann eine [Schaltfläche "Mit Facebook anmelden"](https://developers.facebook.com/docs/facebook-login/ios) zu Ihrer Benutzeroberfläche hinzu. Das Facebook-SDK verwendet ein Sitzungsobjekt, um seinen Status nachzuverfolgen. Amazon Cognito verwendet den Zugriffstoken von diesem Sitzungsobjekt zur Authentifizierung des Benutzers, und um ihn mit einem eindeutigen Amazon-Cognito-Identitäten-Pool (Verbundidentität) zu verbinden.

Wenn Sie das Facebook-Zugriffs-Token für Amazon Cognito bereitstellen möchten, implementieren Sie das [https://github.com/aws-amplify/aws-sdk-ios](https://github.com/aws-amplify/aws-sdk-ios)-Protokoll.

Wenn Sie die `logins`-Methode implementieren, geben Sie ein Wörterbuch zurück, das `AWSIdentityProviderFacebook` enthält. Dieses Wörterbuch fungiert als Schlüssel und das aktuelle Zugriffstoken des authentifizierten Facebook-Benutzers als Wert, wie im folgenden Codebeispiel gezeigt.

```
- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins {
    FBSDKAccessToken* fbToken = [FBSDKAccessToken currentAccessToken];
    if(fbToken){
        NSString *token = fbToken.tokenString;
        return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }];
    }else{
            return [AWSTask taskWithError:[NSError errorWithDomain:@"Facebook Login"
                                                          code:-1
                                                      userInfo:@{@"error":@"No current Facebook access token"}]];
    }
}
```

Beim Instantiieren des `AWSCognitoCredentialsProvider` leiten Sie die Klasse, die `AWSIdentityProviderManager` implementiert, als den Wert von `identityProviderManager` im Konstruktor weiter. Weitere Informationen finden Sie auf der [AWSCognitoCredentialsProvider](https://github.com/aws-amplify/aws-sdk-ios)Referenzseite und wählen Sie **initWithRegionTyp:identityPoolId: identityProviderManager**.

### iOS – Swift
<a name="using-facebook-1.ios-swift"></a>

Wenn Sie die Facebook-Authentifizierung hinzufügen möchten, integrieren Sie zunächst das Facebook-SDK anhand der Anleitungen im [Facebook-Leitfaden](https://developers.facebook.com/docs/ios) in Ihre Anwendung. Fügen Sie dann eine [Schaltfläche "Mit Facebook anmelden"](https://developers.facebook.com/docs/facebook-login/ios) zu Ihrer Benutzeroberfläche hinzu. Das Facebook-SDK verwendet ein Sitzungsobjekt, um seinen Status nachzuverfolgen. Amazon Cognito verwendet den Zugriffstoken von diesem Sitzungsobjekt zur Authentifizierung des Benutzers, und um ihn mit einem eindeutigen Amazon-Cognito-Identitäten-Pool (Verbundidentität) zu verbinden.

**Anmerkung**  
Der Amazon Cognito Cognito-Identitätspoolverbund ist nicht mit [Facebook Limited Login](https://developers.facebook.com/docs/facebook-login/limited-login) kompatibel. Weitere Informationen darüber, wie Sie die Facebook-Anmeldung für iOS einrichten, ohne die für die eingeschränkte Anmeldung festgelegten Berechtigungen zu überschreiten, finden Sie unter [Facebook-Anmeldung für iOS — Schnellstart](https://developers.facebook.com/docs/facebook-login/ios) bei *Meta for Developers*.

Wenn Sie das Facebook-Zugriffs-Token für Amazon Cognito bereitstellen möchten, implementieren Sie das [https://github.com/aws-amplify/aws-sdk-ios](https://github.com/aws-amplify/aws-sdk-ios)-Protokoll.

Wenn Sie die `logins`-Methode implementieren, geben Sie ein Wörterbuch zurück, das `AWSIdentityProviderFacebook` enthält. Dieses Wörterbuch fungiert als Schlüssel und das aktuelle Zugriffstoken des authentifizierten Facebook-Benutzers als Wert, wie im folgenden Codebeispiel gezeigt.

```
class FacebookProvider: NSObject, AWSIdentityProviderManager {
    func logins() -> AWSTask<NSDictionary> {
        if let token = AccessToken.current?.authenticationToken {
            return AWSTask(result: [AWSIdentityProviderFacebook:token])
        }
        return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"]))
    }
}
```

Beim Instantiieren des `AWSCognitoCredentialsProvider` leiten Sie die Klasse, die `AWSIdentityProviderManager` implementiert, als den Wert von `identityProviderManager` im Konstruktor weiter. Weitere Informationen finden Sie auf der [https://github.com/aws-amplify/aws-sdk-ios](https://github.com/aws-amplify/aws-sdk-ios)Referenzseite und wählen Sie **initWithRegionTyp:identityPoolId: identityProviderManager**.

### JavaScript
<a name="using-facebook-1.javascript"></a>

Wenn Sie die Facebook-Authentifizierung hinzufügen möchten, befolgen Sie die Anleitungen unter [Facebook-Anmeldung für das Web](https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.3) und fügen Sie die Schaltfläche **Mit Facebook anmelden** auf Ihrer Website hinzu. Das Facebook-SDK verwendet ein Sitzungsobjekt, um seinen Status nachzuverfolgen. Amazon Cognito verwendet das Zugriffstoken von diesem Sitzungsobjekt, um den Benutzer zu authentifizieren, die eindeutige Kennung zu generieren und dem Benutzer bei Bedarf Zugriff auf andere AWS Ressourcen zu gewähren.

Nachdem Sie den Benutzer mit dem Facebook-SDK authentifiziert haben, fügen Sie das Sitzungs-Token zu den Amazon-Cognito-Anmeldeinformationen des Anbieters hinzu.

```
FB.login(function (response) {

  // Check if the user logged in successfully.
  if (response.authResponse) {

    console.log('You are now logged in.');

    // Add the Facebook access token to the Amazon Cognito credentials login map.
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: 'IDENTITY_POOL_ID',
      Logins: {
        'graph.facebook.com': response.authResponse.accessToken
      }
    });

    // Obtain AWS credentials
    AWS.config.credentials.get(function(){
        // Access AWS resources here.
    });

  } else {
    console.log('There was a problem logging you in.');
  }

});
```

Das Facebook-SDK erhält ein OAuth Token, das Amazon Cognito verwendet, um AWS Anmeldeinformationen für Ihren authentifizierten Endbenutzer zu generieren. Darüber hinaus verwendet Amazon Cognito das Token, um in Ihrer Benutzer-Datenbank zu überprüfen, ob ein Benutzer mit dieser speziellen Facebook-Identität existiert. Wenn der Benutzer bereits vorhanden ist, gibt API gibt den vorhandenen Bezeichner zurück. Andernfalls wird ein neuer Bezeichner zurückgegeben. Bezeichner werden automatisch vom Client-SDK auf dem lokalen Gerät zwischengespeichert.

**Anmerkung**  
Nachdem Sie die Anmeldezuordnung festgelegt haben, geben Sie einen Aufruf an `refresh` oder `get` aus, um die Anmeldeinformationen zu erhalten. Ein Codebeispiel finden Sie in der [JavaScript README-Datei](https://github.com/amazon-archives/amazon-cognito-identity-js/blob/master/README.md) unter „Anwendungsfall 17, Integrieren von Benutzerpools mit Cognito Identity“.

### Unity
<a name="using-facebook-1.unity"></a>

Wenn Sie die Facebook-Authentifizierung hinzufügen möchten, integrieren Sie zunächst das Facebook-SDK anhand der Anleitungen im [Facebook-Leitfaden](https://developers.facebook.com/docs/unity) in Ihre Anwendung. Amazon Cognito verwendet das Facebook-Zugriffstoken vom `FB`-Objekt zum Generieren einer eindeutigen Benutzer-ID, die einer Amazon-Cognito-Identität zugeordnet ist.

Nachdem Sie den Benutzer mit dem Facebook-SDK authentifiziert haben, fügen Sie das Sitzungs-Token zu den Amazon-Cognito-Anmeldeinformationen des Anbieters hinzu.

```
void Start()
{
    FB.Init(delegate() {
        if (FB.IsLoggedIn) { //User already logged in from a previous session
            AddFacebookTokenToCognito();
        } else {
            FB.Login ("email", FacebookLoginCallback);
        }
    });
}

void FacebookLoginCallback(FBResult result)
{
    if (FB.IsLoggedIn)
    {
        AddFacebookTokenToCognito();
    }
    else
    {
        Debug.Log("FB Login error");
    }
}

void AddFacebookTokenToCognito()
{
    credentials.AddLogin ("graph.facebook.com", AccessToken.CurrentAccessToken.TokenString);
}
```

Bevor Sie `FB.AccessToken` verwenden, rufen Sie `FB.Login()` auf und stellen Sie sicher, dass `FB.IsLoggedIn` wahr ist.

### Xamarin
<a name="using-facebook-1.xamarin"></a>

**Xamarin für Android:**

```
public void InitializeFacebook() {
    FacebookSdk.SdkInitialize(this.ApplicationContext);
    callbackManager = CallbackManagerFactory.Create();
    LoginManager.Instance.RegisterCallback(callbackManager, new FacebookCallback &lt; LoginResult &gt; () {
      HandleSuccess = loginResult = &gt; {
        var accessToken = loginResult.AccessToken;
        credentials.AddLogin("graph.facebook.com", accessToken.Token);
        //open new activity
      },
      HandleCancel = () = &gt; {
        //throw error message
      },
      HandleError = loginError = &gt; {
        //throw error message
      }
    });
    LoginManager.Instance.LogInWithReadPermissions(this, new List &lt; string &gt; {
      "public_profile"
    });
  }
```

**Xamarin für iOS:**

```
public void InitializeFacebook() {
  LoginManager login = new LoginManager();
  login.LogInWithReadPermissions(readPermissions.ToArray(), delegate(LoginManagerLoginResult result, NSError error) {
    if (error != null) {
      //throw error message
    } else if (result.IsCancelled) {
      //throw error message
    } else {
      var accessToken = loginResult.AccessToken;
      credentials.AddLogin("graph.facebook.com", accessToken.Token);
      //open new view controller
    }
  });
}
```