Token Akses

Saat seseorang terhubung dengan aplikasi menggunakan Facebook Login, aplikasi tersebut akan dapat memperoleh token akses yang menyediakan akses aman sementara ke API Facebook.

Token akses adalah string yang sulit dimengerti yang mengidentifikasi pengguna, aplikasi, atau Halaman, dan dapat digunakan oleh aplikasi untuk membuat panggilan API graf. Token akses diperoleh melalui sejumlah metode, yang masing-masing dibahas nanti di dokumen ini. Token tersebut menyertakan informasi tentang saat token akan kedaluwarsa dan aplikasi apa yang menghasilkan token. Karena pemeriksaan privasi, sebagian besar panggilan API di Facebook harus menyertakan token akses. Terdapat jenis token akses yang berbeda untuk mendukung beragam kasus penggunaan:

Jenis Token Akses Keterangan

Token Akses Pengguna

Token pengguna adalah jenis token yang paling umum digunakan. Jenis token akses ini diperlukan saat aplikasi memanggil API untuk membaca, mengubah, atau menulis data Facebook orang tertentu atas nama orang tersebut. Token akses pengguna umumnya diperoleh melalui dialog masuk dan mengharuskan seseorang mengizinkan aplikasi Anda untuk mendapatkannya.

Token Akses Aplikasi

Jenis token akses ini diperlukan untuk mengubah dan membaca pengaturan aplikasi. Ini juga dapat digunakan untuk menerbitkan tindakan Graf Terbuka. Token dibuat menggunakan rahasia yang sudah disepakati antara aplikasi dan Facebook, lalu digunakan selama panggilan yang mengubah pengaturan seluruh aplikasi. Anda mendapat token akses aplikasi melalui panggilan server-ke-server.

Token Akses Halaman

Token akses tersebut sama dengan token akses pengguna, kecuali dalam hal penyediaan izin ke API yang membaca, menulis, atau mengubah data milik Halaman Facebook. Untuk mendapatkan token akses halaman, Anda harus memulai dengan mendapatkan token akses pengguna dan meminta izin manage_pages. Setelah Anda memiliki token akses pengguna, Anda kemudian mendapatkan token akses halaman melalui API Graf.

Token Klien

Token klien adalah pengidentifikasi yang dapat Anda sematkan ke biner seluler native atau aplikasi desktop untuk mengidentifikasi aplikasi Anda. Token klien tidak dimaksudkan sebagai pengidentifikasi rahasia karena disematkan di aplikasi. Token klien digunakan untuk mengakses API level aplikasi, tetapi hanya subset yang sangat terbatas. Token klien ditemukan di dasbor aplikasi Anda. Karena token klien jarang digunakan, kami tidak akan membahasnya di dokumen ini. Namun, ini akan dibahas di dokumentasi API yang menggunakan token klien.

Membuat Token Akses

- Token Akses Pengguna

- Token Akses Aplikasi

- Token Akses Halaman


Token Akses Pengguna

Meskipun setiap platform menghasilkan token akses melalui API yang berbeda, semua platform mengikuti strategi dasar untuk mendapatkan token pengguna:

Platform yang berbeda memiliki metode yang berbeda untuk memulai proses ini dan menyertakan fungsionalitas untuk mengelola token akses atas nama pengembang dan orang yang memberikan izin:

Javascript

SDK Facebook untuk Javascript mendapatkan dan mempertahankan token akses pengguna secara otomatis di cookie browser. Anda dapat mengambil token akses pengguna dengan melakukan panggilan ke FB.getAuthResponse yang akan menyertakan properti accessToken dalam tanggapan.

Android

SDK Facebook untuk Android secara otomatis mengelola token akses pengguna melalui kelas com.facebook.AccessToken. Anda dapat mempelajari selengkapnya tentang mendapatkan token akses pengguna dengan menerapkan Facebook Login untuk Android. Anda dapat mengambil token akses pengguna dengan memeriksa Session.getCurrentAccessToken.

iOS

SDK Facebook untuk iOS secara otomatis mengelola token akses pengguna melalui kelas FBSDKAccessToken. Anda dapat mempelajari selengkapnya tentang mendapatkan token akses pengguna dengan menerapkan Facebook Login untuk iOS. Anda dapat mengambil token akses dengan memeriksa FBSDKAccessToken.currentAccessToken.

Web (tanpa JavaScript)

Saat membangun aplikasi di web tanpa SDK Facebook untuk JavaScript, Anda harus membuat token akses selama langkah-langkah yang diuraikan di dokumen tersebut.

Contoh Kode

Android

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    accessToken = AccessToken.getCurrentAccessToken();
}

iOS

- (void)viewDidLoad
{
  [super viewDidLoad];
  NSString *accessToken = [FBSDKAccessToken currentAccessToken];
}

JavaScript (Web)

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  } 
} );

Token Jangka Pendek dan Token Jangka Panjang

Token akses pengguna hadir dalam dua bentuk: token jangka pendek dan token jangka panjang. Token jangka pendek biasanya memiliki jangka waktu sekitar satu atau dua jam, sementara token jangka panjang biasanya memiliki jangka waktu sekitar 60 hari. Anda tidak boleh bergantung pada jangka waktu yang tetap sama - jangka waktu dapat berubah tanpa peringatan atau kedaluwarsa lebih cepat. Lihat selengkapnya di bagian menangani kesalahan.

Token akses yang dibuat melalui masuk web adalah token jangka pendek, tetapi Anda dapat mengubahnya menjadi token jangka panjang dengan melakukan panggilan API sisi server beserta kunci rahasia aplikasi Anda.

Aplikasi seluler yang menggunakan SDK iOS dan Android Facebook mendapat token jangka panjang secara default.

Aplikasi dengan akses Standar ke API Marketing Facebook saat menggunakan token jangka panjang akan menerima token jangka panjang yang tidak memiliki waktu kedaluwarsa. Token-token ini masih dapat mengalami invalidasi karena penyebab lain, tetapi tidak akan kedaluwarsa semata-mata karena waktu. Begitu pula bagi token akses untuk Pengguna Sistem Pengelola Bisnis.

Token bersifat Portabel

Salah satu aspek penting untuk memahami tentang token akses adalah bahwa token-token ini bersifat portabel. Setelah Anda memiliki token akses, Anda dapat menggunakannya untuk melakukan panggilan dari klien seluler, browser web, atau dari server Anda ke server Facebook. Jika sebuah token diperoleh di sebuah klien, Anda dapat mengirimkan token tersebut ke server Anda dan menggunakannya di panggilan server-ke-server. Jika sebuah token diperoleh melalui panggilan server, Anda juga dapat mengirimkan token tersebut ke klien, lalu melakukan panggilan dari klien tersebut.

Pemindahan token antara klien dan server harus dilakukan secara aman melalui HTTPS guna memastikan keamanan akun orang. Baca selengkapnya tentang implikasi pemindahan token antara klien dan server Anda.

Token Akses Aplikasi

Token akses aplikasi digunakan untuk membuat permintaan ke API Facebook atas nama aplikasi, bukan atas nama pengguna. Ini dapat digunakan untuk mengubah parameter aplikasi Anda, membuat dan mengelola pengguna uji, atau membaca wawasan aplikasi Anda.

Pembatasan

Beberapa data pengguna yang biasanya akan dapat dilihat oleh aplikasi yang membuat permintaan dengan token akses pengguna tidak selalu dapat dilihat dengan token akses aplikasi. Jika Anda sedang membaca data pengguna dan menggunakannya di aplikasi Anda, maka Anda harus menggunakan token akses pengguna, bukan token akses aplikasi.

Token akses aplikasi dianggap tidak aman jika aplikasi Anda diatur ke Native/Desktop di pengaturan Lanjutan Dasbor Aplikasi Anda, dan dengan demikian tidak akan dapat berfungsi dengan panggilan API. Hal ini karena kami berasumsi bahwa aplikasi native atau desktop akan menyematkan kunci rahasia aplikasi di suatu tempat (dan oleh karenanya token akses yang dihasilkan menggunakan rahasia tersebut tidak aman).

Membuat Token Akses Aplikasi

Untuk membuat token akses aplikasi, Anda harus melakukan panggilan API Graf:

GET /oauth/access_token
    ?client_id={app-id}
    &client_secret={app-secret}
    &grant_type=client_credentials

Panggilan ini akan menghasilkan token akses aplikasi yang dapat digunakan untuk menggantikan token akses pengguna guna melakukan panggilan API yang dicatat di atas. Sekali lagi, demi keamanan, token akses aplikasi tidak pernah di-hardcoding ke dalam kode sisi klien, dengan melakukan tersebut akan memberi setiap orang yang memuat halaman web Anda atau mendekompilasi aplikasi Anda akses penuh aplikasi Anda ke kunci rahasia aplikasi. Ini berarti bahwa biasanya Anda akan menggunakan token akses aplikasi hanya di panggilan server ke server.

Perhatikan bahwa karena permintaan ini menggunakan kunci rahasia aplikasi Anda, maka tidak boleh dilakukan dalam kode sisi klien atau dalam biner aplikasi yang dapat didekompilasi. Sebaiknya kunci rahasia aplikasi Anda tidak pernah dibagikan kepada siapa pun. Oleh karena itu, panggilan API ini hanya boleh dilakukan menggunakan kode sisi server.

Ada metode lain untuk melakukan panggilan ke API Graf yang tidak memerlukan penggunaan token akses aplikasi yang sudah dibuat. Anda dapat meneruskan id aplikasi dan kunci rahasia aplikasi Anda sebagai parameter access_token saat melakukan panggilan:

https://graph.facebook.com/endpoint?key=value&access_token=app_id|app_secret

Pilihan untuk menggunakan token akses yang dibuat vs. metode ini bergantung pada lokasi Anda menyembunyikan kunci rahasia aplikasi Anda.

Token Akses Halaman

Token akses halaman digunakan di panggilan API Graf untuk mengelola Halaman Facebook. Untuk membuat token akses halaman, pengurus halaman harus memberikan perpanjangan izin yang disebut manage_pages. Setelah izin ini diberikan, Anda dapat mengambil token akses halaman menggunakan token akses pengguna dengan izin yang diperlukan dan permintaan API Graf berikut:

GET /me/accounts HTTP/1.1
Host: graph.facebook.com

Tindakan ini akan menghasilkan daftar yang berisi halaman yang dikelola orang tersebut beserta informasi lainnya tentang Halaman tersebut, seperti kategori Halaman, izin yang dimiliki oleh pengurus untuk Halaman tersebut, dan token akses halaman:

{
  "data": [
    {
      "category": "Product/service",
      "name": "Sample Page",
      "access_token": "{access-token}",
      "id": "1234567890",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }, 
}

Dengan token akses halaman, Anda dapat membuat panggilan API atas nama Halaman. Misalnya, Anda dapat mengirimkan pembaruan status ke sebuah Halaman (alih-alih di kronologi pengguna) atau membaca data Wawasan Halaman.

Token akses halaman bersifat unik untuk setiap Halaman, pengurus, dan aplikasi.

Pengurus halaman memiliki peran berbeda-beda, yang ditandai dengan susunan perms yang dihasilkan sebagaimana contoh di atas. Fungsionalitas yang tersedia untuk mereka diputuskan berdasarkan nilai-nilai perms, yang dijelaskan di Token & Peran.