Mengelola Izin di Facebook Login untuk Web

Salah satu komponen paling penting untuk membuka Dialog Login adalah memilih data apa yang ingin diakses aplikasi Anda. Contoh-contoh ini semuanya menggunakan parameter scope, yang merupakan cara Anda meminta akses ke data seseorang. Ini semua disebut Izin.

Izin dibahas lebih dalam di panduan izin kami. Namun, ada beberapa hal untuk diingat saat membahas tentang izin dan dialog login:

  • Anda meminta izin saat dialog dibuat. Set izin yang dihasilkan dihubungkan dengan token akses yang dikembalikan.
  • Platform lain mungkin memiliki set izin berbeda. Contoh: di iOS Anda dapat meminta tempat yang menandai seseorang, sementara di versi web aplikasi Anda, izin tidak diperlukan untuk pengalaman tersebut.
  • Anda dapat menambahkan izin nanti saat Anda memerlukan kemampuan lainnya. Saat Anda memerlukan izin baru, cukup tambahkan izin yang Anda perlukan ke daftar yang sudah Anda berikan, membuka kembali Dialog Login, dan izin baru akan diminta.
  • Dialog Login memungkinkan orang menolak membagikan izin tertentu dengan aplikasi Anda meski Anda minta. Aplikasi Anda harus menangani kasus seperti ini. Pelajari selengkapnya tentang hal ini di dialog izin kami.
  • Aplikasi yang meminta informasi lebih dari sekadar kolom default dan izin emailharus ditinjau oleh Facebook sebelum boleh tersedia bagi publik. Pelajari selengkapnya dalam dokumentasi kami untuk tinjauan login dan pedoman tinjauan umum kami.

Menambahkan Izin

Salah satu praktik terbaik dengan Facebook Login adalah tidak meminta izin baca dan izin penerbitan pada waktu bersamaan. Untuk mendukung ini, aplikasi Anda dapat meminta izin lainnya nanti, setelah seseorang login. Untuk melakukannya, semua yang harus Anda lakukan adalah membuka Dialog Login dengan izin baru yang Anda minta.

Contoh: katakanlah Anda memiliki Tombol Login dengan izin berikut:

<fb:login-button scope="public_profile" onlogin="checkLoginState();">
</fb:login-button>

Dan jika Anda memeriksa /me/permissions untuk izin yang diberikan setelah orang itu menerima, Anda akan melihat seperti ini:

{"data":
  [
    {
      "permission":"public_profile",
      "status":"granted"
    }
  ]
}

Jika Anda ingin menambahkan izin email nanti, Anda dapat membukanya kembali dengan fungsi FB.login() seperti ini:

FB.login(function(response) {
   console.log(response);
}, {scope: 'email'});

(Fungsi ini harus dipanggil dari handler peristiwa tombol, jika tidak kemungkinan akan diblokir oleh pemblokir jendela popup browser.)

Perhatikan bahwa yang diminta hanya izin baru. Jika Anda menerima pemeriksaan izin baru, /me/permissions akan menghasilkan ini:

{"data":
  [
    {
      "permission":"public_profile",
      "status":"granted"
    },
    {
      "permission":"email",
      "status":"granted"
    }
  ]
}

Perhatikan bahwa izin baru email telah ditambahkan ke daftar izin yang diizinkan.

Meminta kembali Izin yang Ditolak

Dengan Facebook Login, orang dapat menolak membagikan izin dengan aplikasi Anda. Jika seseorang menolak user_likes (Suka), mencentang /me/permissions untuk izin apa yang telah diberikan menghasilkan:

{
  "data":
    [
      {
        "permission":"public_profile",
        "status":"granted"
      },
      {
        "permission":"user_likes",
        "status":"declined"
      }
    ]
}

Perhatikan bahwa user_likes sudah ditolak, dan bukan diberikan.

Tidak mengapa jika meminta seseorang sekali untuk memberikan izin bagi aplikasi Anda yang pernah ditolak. Anda seharusnya memiliki layar edukasi tentang mengapa mereka sebaiknya memberikan izin kepada Anda, kemudian meminta ulang. Akan tetapi, jika Anda menggunakan metode yang dijelaskan di bagian sebelumnya, maka Dialog Login tidak akan meminta izin tersebut.

Ini karena setelah seseorang menolak izin, Dialog Login tidak akan meminta ulang orang tersebut kecuali Anda secara tegas memberitahukan dialog bahwa Anda meminta ulang izin yang ditolak.

Anda melakukan ini dengan menambahkan bendera auth_type: rerequest ke panggilan FB.login() Anda:

FB.login(
  function(response) {
    console.log(response);
  },
  {
    scope: 'user_likes',
    auth_type: 'rerequest'
  }
);

Saat Anda melakukan itu, Dialog Login akan meminta ulang izin yang ditolak. Dialognya akan sangat mirip dengan dialog di bagian tentang meminta ulang izin, tapi akan memungkinkan Anda meminta ulang izin yang ditolak.