Bermain API Dengan Aplikasi Android

From Indonesian Research And Development Center
Jump to: navigation, search

Disclaimer

Tutorial singkat ini hanya untuk tujuan pembelajaran semata. Penulis tidak bertanggungjawab atas penggunaan maupun penyalahgunaan atas tutorial ini.


Pendahuluan

Pada tutorial ini akan dibahas mengenai cara menggunakan atau menguji API yang digunakan oleh aplikasi android. Untuk contoh kali ini, akan digunakan aplikasi yang bernama kulina.


Langkah-langkah

  • Unduh terlebih dahulu aplikasi tersebut. Anda dapat menggunakan situs yang menyediakan layanan untuk mengunduh aplikasi android agar lebih mudah seperti ini:


Kulina-apk downloader.png


  • Setelah mengunduh aplikasi tersebut, gunakan decompiler favorit Anda untuk melakukan analisis. Tutorial ini akan menggunakan aplikasi androguard. Berikut ini adalah tampilan analisis aplikasi kulina menggunakan androguard:


Kulina-androguard.png


  • Dari gambar di atas bisa terlihat beberapa string yang digunakan untuk proses inisialisasi aplikasi, diantaranya adalah sebagai berikut:
android_sdk-664ee68d96e48d051737eecb88ee0aed7ee89679   // intercom TOKEN
h3i8orlm                                               // intercom KEY
.mobile-sdk-api.intercom.io                            // intercom API hostname
/oreo                                                  // intercom endpoint
f0IvF3Y8GFwoqSwG2F99Ej0GB                              // twitter consumer key
bzc2UCIO76tt6mMvupIVnh9bQ8XXpesGVx414QyPaZe8UDzL7P     // twitter consumer secret
...
  • Informasi mengenai token dan key untuk layanan intercom di atas dapat dilihat pada dokumentasi yang ada pada situs intercom.io, namun perlu penyesuaian untuk dapat menggunakan informasi tersebut. Berikut ini adalah contoh yang terdapat pada dokumentasi intercom untuk proses otorisasi:
$ curl https://api.intercom.io/users \
-u pi3243fa:da39a3ee5e6b4b0d3255bfef95601890afd80709 \
-H 'Accept:application/json'

HTTP/1.1 200 Ok

# A basic authentication request in curl uses the -u flag.
# In examples the App ID is 'pi3243fa' and the
# API Key is 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
  • Bisa terlihat bahwa format API Key yang terdapat pada dokumentasi tersebut berbeda dengan yang terdapat pada aplikasi kulina. Alamat API endpoints yang digunakan pada contoh di atas adalah https://api.intercom.io/. Namun, pada aplikasi kulina, endpoints yang terdapat pada package io.intercom.android.sdk.api adalah .mobile-sdk-api.intercom.io. Karena terdapat beberapa perbedaan, maka kita perlu mencoba untuk melakukan request untuk mencari tahu endpoint yang digunakan. Berikut ini adalah request yang dikirimkan ke API endpoint api.intercom.io (output pada contoh ini di-pipe ke aplikasi jq agar lebih mudah dibaca):
% curl -s https://api.intercom.io/users \
-u h3i8orlm:android_sdk-664ee68d96e48d051737eecb88ee0aed7ee89679 \
-H 'Accept:application/json' | jq '.'
{
  "type": "error.list",
  "request_id": "85d05078-90f7-428f-bf95-6bd8f67a7925",
  "errors": [
    {
      "code": "token_unauthorized",
      "message": "Not authorized to access resource"
    }
  ]
}
  • Bisa terlihat bahwa otorisasinya gagal. Dengan melihat kembali string yang terdapat pada proses inisialisasi aplikasi kulina, maka bisa terlihat adanya tambahan /oreo pada API endpoint. Kembali lakukan request dengan menambahkan bagian tersebut pada API endpoint:
% curl -s https://api.intercom.io/oreo/users \
-u h3i8orlm:android_sdk-664ee68d96e48d051737eecb88ee0aed7ee89679 \
-H 'Accept:application/json' | jq '.'
{
  "type": "error.list",
  "request_id": "192bf9a3-7478-4852-a4eb-bcadef6530ba",
  "errors": [
    {
      "code": "400",
      "message": "User email, user_id or anonymous_id must be supplied"
    }
  ]
}
  • Kode error yang diperoleh sekarang berubah menjadi 400 dengan pesan untuk menyertakan informasi mengenai email atau user_id atau anonymous_id. Selanjutnya, ulangi request di atas dengan menambahkan informasi berupa user_id dalam format json. Berikut ini adalah request yang dikirimkan beserta hasilnya:
% curl -s -X POST https://api.intercom.io/oreo/users \
-u h3i8orlm:android_sdk-664ee68d96e48d051737eecb88ee0aed7ee89679 \
-H 'Accept:application/json' \
-H 'Content-Type: application/json' \
-d '{"user_id":"1"}' | jq '.'
{
  "config": {
    "name": "Kulina",
    "base_color": "#ea6253",
    "audio_enabled": true,
    "show_powered_by": false,
    "id_code": "h3i8orlm",
    "welcome_message": [
      {
        "type": "paragraph",
        "text": "Tanya apa saja tentang Kulina disini, atau beri kami masukan tentang layanan kami."
      }
    ],
    "inbound_messages": true,
    "real_time": true,
    "is_first_request": false,
    "real_time_config": {
      "endpoints": [
        "https://nexus-websocket-a.intercom.io/pubsub/1--bqY94csHIdtF7t8ZWPfbrxVCU27_ENkCDKqHiHQ-IE3gGPc",
        "https://nexus-websocket-b.intercom.io/pubsub/1--bqY94csHIdtF7t8ZWPfbrxVCU27_ENkCDKqHiHQ-IE3gGPc"
      ],
      "presence_heartbeat_interval": 30,
      "connection_timeout": 70
    },
    "polling_interval": 7776000,
    "no_real_time_throttle": 60,
    "user_update_dup_cache_max_age": 300,
    "local_rate_limit_period": 60,
    "local_rate_limit": 100
  },
  "user": {
    "user_id": "1",
    "intercom_id": "566f9dd8dc6cc06d4900006b",
    "email": "XXXXXXXXXXX",
    "type": "user"
  },
  "unread_conversations": {
    "conversations": [],
    "total_count": 0
  },
  "team_presence": {
    "active_admins": [
      {
        "id": "241955",
        "first_name": "Kiki",
        "last_name": null,
        "name": "Kiki",
        "avatar": {
          "color": "5bdc83",
          "image_urls": {
            "square_25": "https://static.intercomassets.com/avatars/241955/square_25/rizky_almira.jpg?1446436264",
            "square_50": "https://static.intercomassets.com/avatars/241955/square_50/rizky_almira.jpg?1446436264",
            "square_128": "https://static.intercomassets.com/avatars/241955/square_128/rizky_almira.jpg?1446436264"
          }
        }
      },
      {
        "id": "192652",
        "first_name": "Shafira",
        "last_name": "Indah Meutia",
        "name": "Shafira Indah Meutia",
        "avatar": {
          "color": "544671",
          "image_urls": {
            "square_25": "https://static.intercomassets.com/avatars/192652/square_25/HkxL8MDo.jpeg?1452152791",
            "square_50": "https://static.intercomassets.com/avatars/192652/square_50/HkxL8MDo.jpeg?1452152791",
            "square_128": "https://static.intercomassets.com/avatars/192652/square_128/HkxL8MDo.jpeg?1452152791"
          }
        }
      }
    ],
    "last_active": 1452481303
  }
}
  • Dengan mengganti nilai dari user_id, kita bisa melakukan enumerasi pengguna aplikasi tersebut dan mendapatkan informasi termasuk email yang mereka gunakan.
  • Dari sini, Anda dapat melanjutkan dan mengembangkan informasi pada tutorial ini, serta mempelajari metode yang digunakan oleh aplikasi android lainnya.


Penutup

Sekian tutorial singkat kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang Maha Esa, Maxindo, N3 dan rekan Pratama Wijaya (yang telah memberikan ijin untuk menggunakan aplikasi kulina untuk tutorial ini) serta Anda yang telah membaca tutorial ini.


Referensi