Dokumen ini memberikan panduan tentang langkah-langkah untuk menerapkan Facebook Login dengan Facebook SDK untuk JavaScript di halaman web Anda.
Anda akan memerlukan hal-hal berikut:
Contoh kode berikut menunjukkan kepada Anda cara menambahkan Facebook SDK untuk JavaScript ke halaman web Anda, menginisialisasi SDK, dan jika Anda login ke Facebook, akan menampilkan nama dan email Anda. Jika Anda tidak login ke Facebook, jendela pop-up dialog log login akan ditampilkan secara otomatis.
Izin public_profile , yang memungkinkan Anda untuk mendapatkan informasi yang tersedia untuk publik seperti nama dan foto profil, dan izin email tidak memerlukan tinjauan aplikasi dan secara otomatis diberikan kepada semua aplikasi yang menggunakan Facebook Login.
<!DOCTYPE html> <html lang="en"> <head></head> <body> <h2>Add Facebook Login to your webpage</h2> <!-- Set the element id for the JSON response --> <p id="profile"></p> <script> <!-- Add the Facebook SDK for Javascript --> (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk') ); window.fbAsyncInit = function() { <!-- Initialize the SDK with your app and the Graph API version for your app --> FB.init({ appId : '{your-facebook-app-id}', xfbml : true, version : '{the-graph-api-version-for-your-app}' }); <!-- If you are logged in, automatically get your name and email adress, your public profile information --> FB.login(function(response) { if (response.authResponse) { console.log('Welcome! Fetching your information.... '); FB.api('/me', {fields: 'name, email'}, function(response) { document.getElementById("profile").innerHTML = "Good to see you, " + response.name + ". i see your email address is " + response.email }); } else { <!-- If you are not logged in, the login dialog will open for you to login asking for permission to get your public profile and email --> console.log('User cancelled login or did not fully authorize.'); } }); }; </script> </body> </html>
Di Dasbor Aplikasi, pilih aplikasi Anda dan gulir ke Tambahkan Produk, Klik Siapkan di kartu Facebook Login. Pilih Pengaturan di panel navigasi kiri dan dalam Pengaturan OAuth Klien, masukkan URL pengalihan di kolom URL Pengalihan OAuth yang valid untuk otorisasi.
Tunjukkan bahwa Anda menggunakan JavaScript SDK untuk login dengan mengatur tombol beralih Login dengan JavaScript SDK ke "ya", dan masukkan domain halaman Anda yang meng-hosting SDK di daftar Domain yang Diizinkan untuk JavaScript SDK. Hal ini untuk memastikan bahwa token akses hanya dikembalikan ke panggilan balik dalam domain yang diotorisasi. Hanya halaman https yang didukung untuk tindakan autentikasi dengan Facebook SDK untuk JavaScript.
Langkah pertama saat halaman web Anda dimuat adalah mencari tahu apakah seseorang sudah login ke aplikasi Anda dengan Facebook Login. Panggilan FB.getLoginStatus
akan memulai panggilan ke Facebook untuk mendapatkan status login. Facebook kemudian memanggil fungsi panggilan balik Anda dengan hasilnya.
FB.getLoginStatus(function(response) { statusChangeCallback(response); });
{ status: 'connected', authResponse: { accessToken: '{access-token}', expiresIn:'{unix-timestamp}', reauthorize_required_in:'{seconds-until-token-expires}', signedRequest:'{signed-parameter}', userID:'{user-id}' } }
status
menetapkan status login orang yang menggunakan halaman web. status
bisa berupa salah satu dari berikut ini:
Jenis Status | Deskripsi |
---|---|
| Orang tersebut login ke Facebook, dan sudah login ke halaman web Anda. |
| Orang tersebut login ke Facebook, tetapi belum login ke halaman web Anda. |
| Orang tersebut tidak login ke Facebook, jadi Anda tidak tahu apakah mereka sudah login ke halaman web Anda atau belum. Atau FB.logout() telah dipanggil sebelumnya, sehingga tidak bisa terhubung ke Facebook. |
Jika statusnya adalah connected
, parameter authResponse
berikut tercantum dalam tanggapan:
Parameter authResponse | Nilai |
---|---|
| Token akses untuk orang yang menggunakan halaman web. |
| Cap waktu UNIX saat token kedaluwarsa. Setelah token kedaluwarsa, orang tersebut harus login lagi. |
| Jumlah waktu sebelum login kedaluwarsa, dalam satuan detik, dan orang tersebut akan harus login lagi. |
| Parameter yang ditandatangani, yang berisi informasi tentang orang yang menggunakan halaman web Anda. |
| ID orang yang menggunakan halaman web Anda. |
JavaScript SDK otomatis mendeteksi status login, jadi Anda tidak perlu melakukan tindakan tambahan untuk mengaktifkan perilaku ini.
Jika seseorang membuka halaman web Anda, tetapi tidak login ke sana atau ke Facebook, Anda bisa menggunakan dialog Login untuk mendorong mereka login ke keduanya. Jika tidak login ke Facebook, dia akan diminta login ke Facebook terlebih dahulu, kemudian diminta untuk login ke halaman web Anda.
Ada dua cara untuk membuat seseorang login:
Untuk menggunakan Tombol Facebook Login, gunakan Konfigurator Plugin kami untuk menyesuaikan Tombol Login dan mendapatkan kode.
Untuk menggunakan tombol login Anda sendiri, picu Dialog Login dengan panggilan ke FB.login()
.
FB.login(function(response){ // handle the response });
Saat seseorang mengklik tombol HTML Anda, jendela pop-up dengan dialog Login akan ditampilkan. Dialog ini memungkinkan Anda meminta izin untuk mengakses data seseorang. Parameter scope
bisa diteruskan beserta panggilan fungsi FB.login()
. Parameter opsional ini adalah daftar izin, yang dipisahkan koma, yang harus dikonfirmasi oleh seseorang untuk memberi halaman web Anda akses ke datanya. Facebook Login memerlukan izin publik_profile lanjutan yang bisa digunakan oleh pengguna eksternal.
Contoh ini bertanya kepada orang yang login apakah halaman web Anda diizinkan untuk mengakses profil publik dan emailnya.
FB.login(function(response) { // handle the response }, {scope: 'public_profile,email'});
Tanggapannya, apakah untuk menghubungkan atau membatalkan, menghasilkan sebuah objek authResponse
ke panggilan balik yang ditetapkan saat Anda memanggil FB.login()
. Tanggapan ini bisa dideteksi dan ditangani di dalam panggilan FB.login()
.
FB.login(function(response) { if (response.status === 'connected') { // Logged into your webpage and Facebook. } else { // The person is not logged into your webpage or we are unable to tell. } });
Buat seseorang logout dari halaman web Anda dengan melampirkan fungsi FB.logout()
JavaScript SDK ke tombol atau tautan.
FB.logout(function(response) { // Person is now logged out });
Catatan: Panggilan fungsi ini juga bisa membuat orang itu logout dari Facebook.
Selain itu, logout dari halaman web Anda tidak mencabut izin yang diberikan orang tersebut kepada halaman web Anda selama login. Mencabut izin harus dilakukan secara terpisah. Buat halaman web Anda sedemikian rupa sehingga seseorang yang telah logout tidak akan melihat dialog Login saat mereka kembali login.
Kode ini memuat dan menginisialisasi JavaScript SDK dalam halaman HTML Anda. Ganti {app-id}
dengan ID aplikasi Anda dan {api-version}
dengan versi Graph API yang akan digunakan. Kecuali Anda memiliki alasan spesifik untuk menggunakan versi yang lebih lama, masukkan versi yang paling baru: v21.0
.
<!DOCTYPE html> <html> <head> <title>Facebook Login JavaScript Example</title> <meta charset="UTF-8"> </head> <body> <script> function statusChangeCallback(response) { // Called with the results from FB.getLoginStatus(). console.log('statusChangeCallback'); console.log(response); // The current login status of the person. if (response.status === 'connected') { // Logged into your webpage and Facebook. testAPI(); } else { // Not logged into your webpage or we are unable to tell. document.getElementById('status').innerHTML = 'Please log ' + 'into this webpage.'; } } function checkLoginState() { // Called when a person is finished with the Login Button. FB.getLoginStatus(function(response) { // See the onlogin handler statusChangeCallback(response); }); } window.fbAsyncInit = function() { FB.init({ appId : '{app-id}', cookie : true, // Enable cookies to allow the server to access the session. xfbml : true, // Parse social plugins on this webpage. version : '{api-version}' // Use this Graph API version for this call. }); FB.getLoginStatus(function(response) { // Called after the JS SDK has been initialized. statusChangeCallback(response); // Returns the login status. }); }; function testAPI() { // Testing Graph API after login. See statusChangeCallback() for when this call is made. console.log('Welcome! Fetching your information.... '); FB.api('/me', function(response) { console.log('Successful login for: ' + response.name); document.getElementById('status').innerHTML = 'Thanks for logging in, ' + response.name + '!'; }); } </script> <!-- The JS SDK Login Button --> <fb:login-button scope="public_profile,email" onlogin="checkLoginState();"> </fb:login-button> <div id="status"> </div> <!-- Load the JS SDK asynchronously --> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script> </body> </html>