Token akses Pengguna dan Halaman default berdurasi singkat, dengan masa berlaku yang habis dalam hitungan jam. Namun, Anda dapat menukarkan token berdurasi singkat dengan token berdurasi lama.
Saat Anda menggunakan iOS, Android, atau JavaScript SDK, SDK itu akan otomatis memperbarui token jika pengguna telah menggunakan aplikasi Anda dalam 90 hari terakhir. Aplikasi seluler native yang menggunakan Facebook SDK mendapatkan token akses Pengguna berdurasi lama, sekitar 60 hari. Token tersebut diperbarui kembali sekali dalam sehari saat orang yang menggunakan aplikasi Anda melakukan permintaan ke server Facebook. Jika permintaan tidak dilakukan, token akan kedaluwarsa setelah sekitar 60 hari dan orang tersebut harus melalui alur login lagi untuk mendapat token baru.
Graph API Versi Terbaru: v21.0
Jika Anda membutuhkan token akses Pengguna berdurasi lama, Anda dapat membuatnya menggunakan token akses Pengguna berdurasi singkat. Token berdurasi lama biasanya bertahan selama 60 hari.
Anda akan membutuhkan hal-hal berikut:
Buat kueri endpoint GET oauth/access_token
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
Alur kerja pembuatan token akses Pengguna berdurasi lama adalah sebagai berikut:
Setelah mengambil token berdurasi lama, Anda dapat menggunakannya dari server Anda atau mengirimkannya kembali ke klien untuk digunakan di sana.
Anda tidak dapat menggunakan token yang sudah kedaluwarsa untuk meminta token berdurasi lama. Kalau masa berlaku token sudah habis, aplikasi Anda harus mengarahkan pengguna ke alur login lagi untuk membuat token akses berdurasi singkat yang baru.
Lakukan panggilan ini dari server Anda, bukan klien. Kunci rahasia aplikasi Anda disertakan dalam panggilan API ini, jadi Anda seharusnya tidak perlu melakukan permintaan di sisi klien lagi. Alih-alih menerapkan kode sisi server yang melakukan panggilan, teruskan tanggapan berisi token berdurasi lama kembali ke kode sisi klien Anda. Ini akan menjadi string yang berbeda dari token asli, jadi jika Anda menyimpan token tersebut, gantilah yang lama.
Jangan menggunakan token berdurasi lama yang sama di lebih dari satu klien web (yaitu, jika orang tersebut masuk dari lebih dari satu komputer). Namun, Anda harus menggunakan token berdurasi lama di server Anda untuk membuat kode, lalu gunakanlah untuk mendapat token berdurasi lama di klien. Lihat di bawah ini untuk informasi cara Membuat token berdurasi lama dari token berdurasi lama sisi server.
Jika Anda membutuhkan token akses Halaman berdurasi lama, Anda dapat membuatnya menggunakan token akses Pengguna berdurasi lama. Token akses Halaman berdurasi lama tidak memiliki tanggal kedaluwarsa dan hanya kedaluwarsa atau tidak valid dalam kondisi tertentu.
Anda akan membutuhkan hal-hal berikut:
Lakukan kueri endpoint GET {app-scoped-user-id}?accounts
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
Facebook memiliki sebuah opsi untuk mendapatkan token akses berdurasi lama bagi aplikasi tanpa memicu sistem spam otomatis Facebook. Aplikasi yang:
Di level tinggi, Anda mendapatkan token berdurasi lama untuk klien dengan:
Buat kueri endpoint GET oauth/client_code
. URI pengarahan ulang harus memiliki nilai yang sama persis dengan yang Anda tetapkan di dasbor aplikasi di bawah kartu Facebook Login > Klien Pengaturan > Pengaturan OAuth.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Setelah Anda mengambil kode dari server Facebook, Anda harus mengirimkannya ke klien melalui saluran yang aman. Jika sudah selesai, Anda harus membuat permintaan dari klien ke endpoint /oauth/access_token
:
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
machine_id
adalah parameter opsional yang mengidentifikasi dan melacak klien dan digunakan untuk pengamanan dan pencegahan spam. Ini adalah nilai per klien bukan per pengguna. Jika Anda sebelumnya melakukan panggilan untuk mendapat kode dan diberi machine_id
, Anda harus menyertakannya dalam permintaan kode Anda.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
Alur kerja untuk membuat token berdurasi lama adalah sebagai berikut: