Token Akses Berdurasi Lama

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

Mendapatkan Token Akses Pengguna Berdurasi Lama

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:

  • Token Akses Pengguna yang valid
  • ID Aplikasi
  • Kunci Rahasia Aplikasi

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}" 

Contoh Tanggapan

{
  "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.

Peringatan

  • 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.

Mendapatkan Token Akses Halaman Berdurasi Lama

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}"

Contoh Tanggapan

{
  "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"
    }
  }
}

Mendapatkan Token Berdurasi Lama untuk Klien

Facebook memiliki sebuah opsi untuk mendapatkan token akses berdurasi lama bagi aplikasi tanpa memicu sistem spam otomatis Facebook. Aplikasi yang:

  • Memiliki sistem autentikasi sendiri (contoh: menggunakan nama pengguna/kata sandi)
  • Menyimpan token akses Facebook di server mereka untuk orang-orang yang menggunakannya klien berbeda (browser atau aplikasi seluler native)
  • Melakukan panggilan API dari semua klien yang berbeda itu

Di level tinggi, Anda mendapatkan token berdurasi lama untuk klien dengan:

  1. Menggunakan token akses berdurasi lama yang valid, server Anda mengirimkan permintaan untuk mendapatkan kode dari Facebook.
  2. Facebook mengirimkan kode kembali ke server Anda dan Anda secara aman mengirimkan kode ini kepada klien.
  3. Klien menggunakan kode ini untuk meminta token berdurasi lama dari Facebook.
  4. Facebook mengirimi klien token berdurasi lama, yang digunakan untuk memposting cerita atau meng-kueri data.

Mendapatkan Kode

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}" 

Contoh Tanggapan

{
  "code":"{code-for-your-client}"
}

Menukarkan Kode dengan Token Akses Berdurasi Lama

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.

Contoh Tanggapan

{
  "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: