

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyiapkan Facebook sebagai kumpulan identitas IDP
<a name="facebook"></a>

Kumpulan identitas Amazon Cognito bekerja dengan Facebook untuk menyediakan otentikasi federasi bagi pengguna aplikasi Anda. Bagian ini menjelaskan cara mendaftar dan mengatur aplikasi Anda dengan Facebook sebagai IDP.

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

Daftarkan aplikasi Anda dengan Facebook sebelum Anda mengautentikasi pengguna Facebook dan berinteraksi dengan Facebook APIs.

[Portal Pengembang Facebook](https://developers.facebook.com/) membantu Anda mengatur aplikasi Anda. Lakukan prosedur ini sebelum Anda mengintegrasikan Facebook di kumpulan identitas Amazon Cognito Anda:

**catatan**  
Federasi kumpulan identitas Amazon Cognito tidak kompatibel dengan Login [Terbatas Facebook](https://developers.facebook.com/docs/facebook-login/limited-login). Untuk informasi selengkapnya tentang cara mengatur Login Facebook untuk iOS tanpa melebihi izin yang ditetapkan untuk Login Terbatas, lihat [Login Facebook untuk iOS - Mulai Cepat](https://developers.facebook.com/docs/facebook-login/ios) di *Meta* untuk Pengembang.

**Menyiapkan Facebook**

1. Pada [Portal Developer Facebook](https://developers.facebook.com/), masuk dengan kredensial Facebook Anda.

1. Dari menu **Aplikasi**, pilih **Tambah Aplikasi Baru**.

1. Pilih platform dan selesaikan proses mulai cepat.

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

Untuk informasi selengkapnya tentang cara mengintegrasikan aplikasi Android dengan Login Facebook, lihat [Panduan Memulai Facebook](https://developers.facebook.com/docs/android/getting-started).

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

Untuk informasi selengkapnya tentang cara mengintegrasikan aplikasi iOS Objective-C dengan Login Facebook, lihat Panduan [Memulai Facebook](https://developers.facebook.com/docs/ios/getting-started/).

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

Untuk informasi selengkapnya tentang cara mengintegrasikan aplikasi iOS Swift dengan Login Facebook, lihat [Panduan Memulai Facebook](https://developers.facebook.com/docs/ios/getting-started/).

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

Untuk informasi selengkapnya tentang cara mengintegrasikan aplikasi JavaScript web dengan Login Facebook, lihat [Panduan Memulai Facebook](https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.3).

## Mengonfigurasi penyedia identitas di konsol kumpulan identitas Amazon Cognito
<a name="configure-the-external-provider-in-the-amazon-cognito-console"></a>

Gunakan prosedur berikut untuk mengonfigurasi penyedia identitas Anda.

**Untuk menambahkan penyedia identitas Facebook (iDP)**

1. Pilih **kumpulan Identitas** dari konsol [Amazon Cognito](https://console.aws.amazon.com/cognito/home). Pilih kumpulan identitas.

1. Pilih tab **Akses pengguna**.

1. Pilih **Tambahkan penyedia identitas**.

1. Pilih **Facebook**.

1. Masukkan **ID Aplikasi** OAuth proyek yang Anda buat di [Meta for Developers](https://developers.facebook.com/). Untuk informasi selengkapnya, lihat [Login Facebook](https://developers.facebook.com/docs/facebook-login/) di *Meta for Developers Docs*.

1. **Untuk menyetel peran yang diminta Amazon Cognito saat mengeluarkan kredensil kepada pengguna yang telah diautentikasi dengan penyedia ini, konfigurasikan setelan Peran.**

   1. Anda dapat menetapkan pengguna dari IDP tersebut peran **Default** yang Anda atur saat mengonfigurasi peran **Terautentikasi, atau Anda** **dapat Memilih** peran dengan aturan.

     1. Jika Anda memilih **Pilih peran dengan aturan**, masukkan **Klaim** sumber dari autentikasi pengguna Anda, **Operator** yang ingin Anda bandingkan dengan klaim, **Nilai** yang akan menyebabkan kecocokan dengan pilihan peran ini, dan **Peran** yang ingin Anda tetapkan saat **penetapan Peran** cocok. Pilih **Tambahkan yang lain** untuk membuat aturan tambahan berdasarkan kondisi yang berbeda.

     1. Pilih **Resolusi Peran**. **Jika klaim pengguna tidak sesuai dengan aturan, Anda dapat menolak kredensil atau mengeluarkan kredensi untuk peran yang Diautentikasi.**

1. **Untuk mengubah tag utama yang ditetapkan Amazon Cognito saat mengeluarkan kredensil kepada pengguna yang telah diautentikasi dengan penyedia ini, konfigurasikan Atribut untuk kontrol akses.**

   1. Untuk tidak menerapkan tag utama, pilih **Tidak aktif**.

   1. Untuk menerapkan tag utama berdasarkan `sub` dan `aud` klaim, pilih **Gunakan pemetaan default**.

   1. Untuk membuat skema atribut kustom Anda sendiri ke tag utama, pilih **Gunakan pemetaan khusus**. Kemudian masukkan **kunci Tag** yang ingin Anda sumber dari setiap **Klaim** yang ingin Anda wakili dalam tag.

1. Pilih **Simpan perubahan**.

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

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

Untuk menambahkan otentikasi Facebook, pertama-tama ikuti [panduan Facebook](https://developers.facebook.com/docs/android) dan integrasikan SDK Facebook ke dalam aplikasi Anda. Kemudian tambahkan [tombol **Login dengan Facebook**](https://developers.facebook.com/docs/facebook-login/android) ke antarmuka pengguna Android Anda. SDK Facebook menggunakan objek sesi untuk melacak keadaannya. Amazon Cognito menggunakan token akses dari objek sesi ini untuk mengautentikasi pengguna, menghasilkan pengenal unik, dan, jika diperlukan, memberikan pengguna akses ke sumber daya lain. AWS 

Setelah Anda mengautentikasi pengguna Anda dengan Facebook SDK, tambahkan token sesi ke penyedia kredensi Amazon Cognito.

SDK Facebook 4.0 atau lebih baru:

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

SDK Facebook sebelum 4.0:

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

Proses login Facebook menginisialisasi sesi tunggal di SDK-nya. Objek sesi Facebook berisi OAuth token yang digunakan Amazon Cognito untuk menghasilkan AWS kredensil bagi pengguna akhir Anda yang diautentikasi. Amazon Cognito juga menggunakan token untuk memeriksa database pengguna Anda untuk keberadaan pengguna yang cocok dengan identitas Facebook khusus ini. Jika pengguna sudah ada, API mengembalikan pengidentifikasi yang ada. Jika tidak, API mengembalikan pengenal baru. SDK klien secara otomatis menyimpan pengenal di perangkat lokal.

**catatan**  
Setelah Anda mengatur peta login, lakukan panggilan ke `refresh` atau `get` untuk mengambil kredensialnya. AWS 

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

Untuk menambahkan otentikasi Facebook, pertama-tama ikuti [panduan Facebook](https://developers.facebook.com/docs/ios) dan integrasikan SDK Facebook ke dalam aplikasi Anda. Kemudian tambahkan [Tombol Masuk dengan Facebook](https://developers.facebook.com/docs/facebook-login/ios) ke antarmuka pengguna Anda. SDK Facebook menggunakan objek sesi untuk melacak keadaannya. Amazon Cognito menggunakan token akses dari objek sesi ini untuk mengautentikasi pengguna dan mengikat mereka ke kolam identitas Amazon Cognito unik (identitas federasi).

Untuk menyediakan token akses Facebook ke Amazon Cognito, terapkan protokol. [https://github.com/aws-amplify/aws-sdk-ios](https://github.com/aws-amplify/aws-sdk-ios)

Saat Anda menerapkan `logins` metode ini, kembalikan kamus yang berisi`AWSIdentityProviderFacebook`. Kamus ini bertindak sebagai kunci, dan token akses saat ini dari pengguna Facebook yang diautentikasi bertindak sebagai nilai, seperti yang ditunjukkan pada contoh kode berikut.

```
- (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"}]];
    }
}
```

Saat Anda memberi contoh `AWSCognitoCredentialsProvider`, teruskan kelas yang menerapkan `AWSIdentityProviderManager` sebagai nilai dari `identityProviderManager` dalam konstruktor. Untuk informasi lebih lanjut, buka halaman [AWSCognitoCredentialsProvider](https://github.com/aws-amplify/aws-sdk-ios)referensi dan pilih **initWithRegionJenis:identityPoolId: identityProviderManager**.

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

Untuk menambahkan otentikasi Facebook, pertama-tama ikuti [panduan Facebook](https://developers.facebook.com/docs/ios) dan integrasikan SDK Facebook ke dalam aplikasi Anda. Kemudian tambahkan [Tombol Masuk dengan Facebook](https://developers.facebook.com/docs/facebook-login/ios) ke antarmuka pengguna Anda. SDK Facebook menggunakan objek sesi untuk melacak keadaannya. Amazon Cognito menggunakan token akses dari objek sesi ini untuk mengautentikasi pengguna dan mengikat mereka ke kolam identitas Amazon Cognito unik (identitas federasi).

**catatan**  
Federasi kumpulan identitas Amazon Cognito tidak kompatibel dengan Login [Terbatas Facebook](https://developers.facebook.com/docs/facebook-login/limited-login). Untuk informasi selengkapnya tentang cara mengatur Login Facebook untuk iOS tanpa melebihi izin yang ditetapkan untuk Login Terbatas, lihat [Login Facebook untuk iOS - Mulai Cepat](https://developers.facebook.com/docs/facebook-login/ios) di *Meta* untuk Pengembang.

Untuk menyediakan token akses Facebook ke Amazon Cognito, terapkan protokol. [https://github.com/aws-amplify/aws-sdk-ios](https://github.com/aws-amplify/aws-sdk-ios)

Saat Anda menerapkan `logins` metode ini, kembalikan kamus yang berisi`AWSIdentityProviderFacebook`. Kamus ini bertindak sebagai kunci, dan token akses saat ini dari pengguna Facebook yang diautentikasi bertindak sebagai nilai, seperti yang ditunjukkan pada contoh kode berikut.

```
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"]))
    }
}
```

Saat Anda memberi contoh `AWSCognitoCredentialsProvider`, teruskan kelas yang menerapkan `AWSIdentityProviderManager` sebagai nilai dari `identityProviderManager` dalam konstruktor. Untuk informasi lebih lanjut, buka halaman [https://github.com/aws-amplify/aws-sdk-ios](https://github.com/aws-amplify/aws-sdk-ios)referensi dan pilih **initWithRegionJenis:identityPoolId: identityProviderManager**.

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

Untuk menambahkan otentikasi Facebook, ikuti [Login Facebook untuk Web](https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.3) dan tambahkan tombol **Login dengan Facebook** di situs web Anda. SDK Facebook menggunakan objek sesi untuk melacak keadaannya. Amazon Cognito menggunakan token akses dari objek sesi ini untuk mengautentikasi pengguna, menghasilkan pengenal unik, dan, jika diperlukan, memberikan pengguna akses ke sumber daya lain. AWS 

Setelah Anda mengautentikasi pengguna Anda dengan Facebook SDK, tambahkan token sesi ke penyedia kredensi Amazon Cognito.

```
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.');
  }

});
```

SDK Facebook memperoleh OAuth token yang digunakan Amazon Cognito untuk AWS menghasilkan kredensil bagi pengguna akhir Anda yang diautentikasi. Amazon Cognito juga menggunakan token untuk memeriksa pada basis data pengguna Anda untuk keberadaan pengguna yang cocok dengan identitas Facebook tertentu ini. Jika pengguna sudah ada, API mengembalikan pengidentifikasi yang ada. Jika tidak sebuah pengidentifikasi baru dikembalikan. Pengidentifikasi secara otomatis di-cache oleh SDK klien di perangkat lokal.

**catatan**  
Setelah Anda mengatur peta login, lakukan panggilan ke `refresh` atau `get` untuk mendapatkan kredensialnya. [Untuk contoh kode, lihat “Gunakan Kasus 17, Mengintegrasikan Kumpulan Pengguna dengan Identitas Cognito,” di JavaScript file README.](https://github.com/amazon-archives/amazon-cognito-identity-js/blob/master/README.md)

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

Untuk menambahkan otentikasi Facebook, pertama-tama ikuti [panduan Facebook](https://developers.facebook.com/docs/unity) dan integrasikan SDK Facebook ke dalam aplikasi Anda. Amazon Cognito menggunakan token akses Facebook dari `FB` objek untuk menghasilkan pengenal pengguna unik yang terkait dengan identitas Amazon Cognito.

Setelah Anda mengautentikasi pengguna Anda dengan Facebook SDK, tambahkan token sesi ke penyedia kredensi Amazon Cognito:

```
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);
}
```

Sebelum Anda menggunakan`FB.AccessToken`, hubungi `FB.Login()` dan pastikan `FB.IsLoggedIn` itu benar.

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

**Xamarin untuk 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 untuk 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
    }
  });
}
```