Cara menggunakan Personal Access Token Pada Laravel Passport

Pada artikel sebelumnya saya sempat membahas cara ambil token dari user credential email dan password dengan tipe grant password dan lalu melakukan proses pengambilan resources dari token yang didapat tersebut. Sekarang saya coba ingin menulis cara menggunakan Personal Access Token pada Laravel Passport. Dengan konsep yang mirip sama dengan grant password, Personal Access Token ini memiliki kelebihan dalam kemudahan mengakses token, namun ada beberapa kelemahan pula yang harus dihandel oleh programmer.

Pada Personal Access Token, untuk mendapatkan token sangat mudah dengan mengambil data user yang aktif lalu buat token sesuai dengan nama Personal Access Token yang dibuat terlebih dahulu.

Awalnya adalah kita buat dulu Personal Access Token dengan perintah seperti pada dokumentasi Laravel.

php artisan passport:client --personal

Jika perintah ini dilakukan, kita disuruh untuk menuliskan nama identik dari Personal Access Token. Jika berhasil, anda simpan nama tersebut untuk proses pembuatan token.

Nah, Personal Access Token dalam kasus ini saya implement ketika berhasil login, jadi ketika berhasil login ambil data user lalu buat saja tokennya seperti pada gambar dibawah ini.

Laravel Personal Access Token

Terlihat pada gambar diatas, saya ambil data user dengan variable $data, lalu saya create token dengan perintah

$token = $data->createToken('namatokenidentik')->accessToken;

Nah token ini bisa langsung digunakan untuk mengambil data resources api tertentu. Untuk melihatnya, silahkan liat artikel sebelumnya ya.

Masalah yang terjadi jika pakai Personal Access Token ini adalah token bersifat long-lived artinya tidak ada expired sama sekali. Ini sebenernya memiliki arti yang baik atau buruk tergantung kebutuhan aplikasi. Untuk aplikasi yang berkaitan dengan data privasi, token harus dan wajib sering diubah. Ibarat password, kadang anda diminta untuk mengubah password secara berkala?


[crp]


Untuk itu, masalah Personal Access Token harus dihandel dengan cara mungkin melakukan pengecekan token yang sudah lama di create. Cara melihat token yang ada adalah dengan mengecek table oauth_access_token pada aplikasi Laravel kita.

Masalah lain yang saya lihat adalah ketika user akses login satu user dengan lebih dari satu device atau satu mesin, Personal Access Token ini tetep membuat token, sampai akhirnya token duplicate padahal hanya satu user.

Cara menghandelnya adalah ketika user melakukan logout, panggil saja fungsi untuk menghapus token tersebut dengan perintah.

$token = $request->user()->token()->revoke();

Perintah ini akan menghapus token yang sedang aktif. Sehingga tidak mengalami duplicate token di database kita.

Sempai disini, moga ada manfaatnya ya 🙂

Ambil Token Untuk Akses Resource Tertentu dengan Laravel via Passport (Password Grant Tokens)

Halo, lama tidak menulis lagi, sekarang saya ingin nge-share sekalian mencatat bagaimana menggunakan Passport pada Laravel dengan studi kasus adalah pengambilan token lalu mengakses resources via api tertentu. Pada tulisan ini saya tidak menjelaskan cara melakukan instalasi Passport pada Laravel, silahkan baca pelan-pelan documentasi Laravel Passport yah 🙂

Asumsi awal adalah saya ada orang android ingin mendapatkan voucher yang dimiliki oleh salah satu customer tertentu. Karena android tidak mengenal proses session, maka customer_id tidak mungkin kita lempar begitu saja melalui proses pengiriman data pada http. Walaupun memang jika data-data biasa saja bukan data seperti transferan duit atau password key untuk akses data-data bank, tetep aja kita coba pasang securitynya agar tidak terlalu terbaca datanya.

Untuk itu, proses dari android ke server biasa melalui API dengan teknologi security seperti OAuth yang tentu sudah di-implementasi oleh Passport Laravel. Tanpa panjang lebar, yuk mari kita buka langsung aja server untuk cara awal mendapatkan tokennya.

Langkah #1
Buka lokal atau server api yang sudah terinstall laravel passport. Lalu ketik perintah untuk membuat client_id dan client secret “Password Grant Tokens”.

php artisan passport:client --password

Laravel Passport 1

Setelah berhasil, gunakan client_id dan client_secret untuk mendapatkan token dengan langkah kedua.

Langkah #2
Oke, jika client_id dan client_secret yang sudah didapatkan, sekarang kita coba akses token-nya dengan aplikasi Postman.

Passport Laravel 2

Pada gambar telihat saya input parameter POST, lalu akses URL dengan url sesuai dengan server atau local IP yang sudah terinstall laravel passportnya. URL Akses get token-nya adalah http://namaserver.com/oauth/token.

Parameter POST data yang dikirim adalah

{
    "grant_type": "password",
    "client_id": "5",
    "client_secret": "gr7Y2EnwlpsXli08RIL39Th7rECfsmR49blyyZcA",
    "username": "adiputra@bambideal.com",
    "password": "admin@123",
    "scope": ""
}

Pilih grant_type nya adalah passport, lalu isi client_id dan client_secret yang didapat pada Langkah 1, isi username dan passport login user yang hendak ingin diambil data tokennya. Jika sudah, SEND saja lalu lihat apakah token/access_token bisa didapat. Pada gambar terlihat access_token didapat.

Langkah #3
Jika udah dapet access_token, kita coba apa bener access_token ini bisa mengambil data user yang barusan kita masukan email/username dan passwordnya. Copy dulu access_token yang didapat pada Langkah 2, lalu buat proses pada Postman baru dengan URL seperti pada gambar.

Laravel Passport 3

access_token tadi di-paste pada kolom Headers dengan parameter Authorization, value Bearer[spasi]access_token. Jangan lupa method yang digunakan adalah GET. Cek routes:list pada laravel untuk melihat detail oauth routes pada Passport.

Langkah 4
Jika sudah, jalankan “SEND” dan lihat…data pribadi dari pemilik token sudah didapatkan. Hal ini karena ketika kita buat laravel, sudah ada route routes/api.php yang mengarah pada endpoint /user.

routes/api.php
Laravel Passport 4

Terlihat pada gambar, ada route /user untuk mendapatkan data user dengan akses pembatasan middleware auth:api.

Langkah 5
Jika sudah benar pada langkah 4, pada gambar diatas sebelumnya itu saya ingin membuat api untuk mendapatkan voucher berdasarkan pemilik token.

Route::group(['middleware' => ['auth:api']], function () {
    Route::post('/voucher/get', ['as'=>'api.voucher.get', 'uses'=>'VoucherController@get'] );

});

Lalu bagaimana selanjutnya? agar kita bisa query data voucher berdasarkan token yang dikirim?

Mari kita coba buka controller VoucherController.php

Laravel Passport 5

Terlihat pada gambar, cara mendapatkan customer_id atau id user dari token yang dikirim adalah dengan cara $request->user()->id;

Sekarang mari kita coba untuk tembak api mendapatkan voucher yang telah kita siapkan diproses ini. Buka kembali Postman, lalu buka tab baru untuk proses tembak api terbaru. Dan jalankan proses seperti pada gambar dibawah ini sampai mendapatkan resources yang sesuai 🙂

Laravel Passport 6

Sampai disini selesai sudah caranya agar token bisa dipakai untuk mendapatkan resources dari api dengan Laravel Passport.

Hal penting lainnya soal token/access_token ini adalah expired dan refresh_token yang didapat ketika mendapatkan token diawal tadi. Karena token yang didapat memiliki expired waktu tertentu jadi perlu handle pengecekan apakah token sudah expired atau belun.

Semoga bermanfaat, bingung tinggal kontak-kontakan aja 😀

Pengalaman membuat format API yang konsisten dan mudah dibaca

Entah kenapa sampai saya ingin menulis artikel tentang API. Pengalaman bekerja dengan programmer yang membuat API untuk saya pakai di salah satu project membuat saya ingin sekali menyampaikan betapa API yang konsisten dan mudah dibaca oleh programmer lain (response data) itu sangat-sangat mempercepat kerja dalam menyelesaikan project.

Sebelumnya, mungkin bisa tonton dulu apa itu API di dunia programming lewat video ini.

Yap, jika sudah menonton video tersebut anda akan mengatahui bahwa API itu dipakai oleh banyak aplikasi lain. Simplenya, anda membuka detik.com di website dengan membuka aplikasi detik.com di android ataupun di IOS pasti ada API yang melayani. Lajut ya 🙂

Continue reading Pengalaman membuat format API yang konsisten dan mudah dibaca

Google Maps sederhana dengan GoMap

Ada banyak cara untuk membuat Google Map. Dari situsnya documentasi si Google pun mudah untuk mempelajarinya. Namun, jika anda merasa sulit dan membutuhkan solusi untuk menampilkan alamat dengan Google Map tidak terlalu rumit dan memang hanya menampilkan alamat saja dan fungsi-fungsi tertentu, anda dapat mencoba menggunakan Plugin Google Map, goMap. Continue reading Google Maps sederhana dengan GoMap

Cara Mendapatkan Token Facebook FanPage API di Codeigniter

Mungkin ada beberapa teman yang menanyakan bagaimana mengirim atau post status ke facebook fan page yang telah kita buat secara otomatis pada sistem yang kita buat dengan codeigniter. Seperti biasanya, facebook fan page biasa digunakan untuk memberikan informasi terbaru. Jika sistem yang anda buat adalah e-commerce, maka mungkin promo, diskon dan hal lain yang menarik pelanggan akan anda post ke wall fan page facebook anda. Atau jika sistem anda adalah e-learning, info-info tugas baru yang baru saja di upload oleh guru akan sangat bermanfaat buat siswa. Continue reading Cara Mendapatkan Token Facebook FanPage API di Codeigniter

Ambil Data Diri Google Plus Dengan PHP dan Google API

Belum lama ini saya coba-coba API nya si Google dengan mengambil data diri Google Plus. Jadi, saat dia login di aplikasi kita nanti, data-data yang dia input di Google Plus bisa diambil. Jadi, mungkin dapat jadi satu pilihan kembali apabila user ingin registrasi tak perlu membuat form input untuk menyimpan data user, cukup satu tombol untuk aksi ke API nya Google, kita bisa dapatkan data-data si user tersebut. Continue reading Ambil Data Diri Google Plus Dengan PHP dan Google API

Instalasi Twitter API pada Codeigniter

Baik Twitter ataupun Facebook memegang peran penting saat ini untuk keperluan tertentu baik pada website, aplikasi desktop ataupun aplikasi mobile. Pada website, twitter digunakan untuk promosi, ataupun sekedar menyapa customer suatu perusahaan dan lain sebagainya. Untuk promosi, suatu website membuat fungsi khusus untuk bagaimana caranya si website dapat mengirimkan data-data promosi ke twitter secara langsung tanpa harus buka akun twitter.

Bagaimana caranya website dapat mengirimkan data-data promosi ke twitter secara langsung tanpa harus login akun twitter kita ?? Berikut penjelasan yang saya coba tulis pada artikel ini. Continue reading Instalasi Twitter API pada Codeigniter

Instalasi Facebook API pada Codeigniter

Untuk menyambungkan website kita dengan Facebook base Codeigniter dapat kita lakukan dengan beberapa proses sederhana. Saya coba jelaskan pada artikel ini, semoga dapat dijadikan acuan terutama bagi saya dan teman-teman yang ingin menyambungkan website dengan Facebook yang biasa dikenal API Facebook. Continue reading Instalasi Facebook API pada Codeigniter