SDK Android memiliki dukungan untuk integrasi dengan API Graf Facebook. Dengan kelas GraphRequest
dan GraphResponse
, Anda dapat mengajukan permintaan dan mendapat tanggapan di JSON secara asinkron. Anda juga dapat mengajukan permintaan batch dengan round-trip tunggal ke server Facebook dengan GraphRequestBatch
.
Pelajari selengkapnya tentang API Graf di:
Lihat juga referensi GraphRequest
, GraphResponse
dan GraphRequestBatch
untuk mempelajari cara menggunakan SDK Facebook untuk Android dan melakukan panggilan API Graf untuk kasus penggunaan tambahan.
Sebelum Anda mulai, siapkan:
GraphRequest
Kelas GraphRequest
memiliki metode newMeRequest
yang memanggil titik akhir /user/me untuk mengambil data pengguna dari token akses yang ditentukan.
SDK Android mengirim izin yang dimiliki aplikasi Anda di access_token
dan izin ini mengontrol akses data. Jika aplikasi Anda tidak menyediakan token akses, API graf hanya mengembalikan informasi yang tersedia secara umum. Untuk rincian properti dan izin User
, lihat Referensi API Graf, User
.
Secara default metode newMeRequest
mengambil bidang default dari objek pengguna. Jika Anda memerlukan bidang tambahan, atau ingin mengurangi muatan respons demi alasan kinerja, Anda dapat menambahkan parameter fields
dan meminta bidang tertentu:
GraphRequest request = GraphRequest.newMeRequest( accessToken, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject object, GraphResponse response) { // Application code } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,link"); request.setParameters(parameters); request.executeAsync();
Dalam metode callback, data respons di-deserialisasikan ke dalam JSONObject
jika permintaan berhasil. Bidang yang tidak dapat diambil karena tidak adanya izin akan dihilangkan dari hasil.
Bagi pengguna yang masuk, SDK memiliki kelas Profile
dan ProfileTracker
, lihat Facebook Login untuk Android.
Data yang Anda akses bergantung pada izin yang diberikan seseorang pada aplikasi Anda dan data yang dipilih untuk dibagikan dengan aplikasi. Berikut ini contoh respons mentah API Graf untuk user_location
dan user_birthday
:
{ "id": "12345678", "birthday": "1/1/1950", "first_name": "Chris", "gender": "male", "last_name": "Colm", "link": "http://www.facebook.com/12345678", "location": { "id": "110843418940484", "name": "Seattle, Washington" }, "locale": "en_US", "name": "Chris Colm", "timezone": -8, "updated_time": "2010-01-01T16:40:43+0000", "verified": true }
Sesuai dengan titik akhir yang Anda panggil, Anda menerima JSONObject
atau JSONArray
.
Panggilan objek tunggal seperti newMeRequest
menghasilkan JSONObject
. Panggilan untuk beberapa hasil seperti newMyFriendsRequest
menghasilkan JSONArray
.
Anda dapat memeriksa bidang kesalahan di objek GraphResponse
untuk melihat apakah permintaan gagal atau tidak. Bidang kesalahan adalah dari tipe FacebookRequestError
. Metode yang dapat Anda panggil adalah:
Objek kesalahan memiliki bidang yang menjelaskan rincian kesalahan termasuk:
error code
,sub error code
error message
user facing error message
Untuk rincian lain tentang kemungkinan kode kesalahan, lihat Menggunakan API Graf, Penanganan Kesalahan.
Objek GraphResponse
juga memiliki enum
yang mengkategorikan kesalahan. Tiga kemungkinan kategorisasi adalah:
LOGIN_RECOVERABLE
- Ada masalah yang mengharuskan pengguna untuk masuk kembali. Anda dapat memanggil LoginManager
resolveError
dengan objek dan aktivitas atau fragmen GraphResponse
dari aplikasi Anda. Hal ini akan memicu UI Facebook Login, dan Anda harus menggunakan CallbackManager
dengan memanggil fragmen atau aktivitas masuk agar berhasil.TRANSIENT
- Menunjukkan terjadinya masalah untuk sementara, dan aplikasi Anda dapat mencoba lagi permintaan.OTHER
- Menunjukkan terjadinya masalah umum, dan Anda dapat memperoleh rincian lain dengan memeriksa error code
dan sub error code
.Jika Anda mengalami masalah mengambil data pengguna, aktifkan pencatatan permintaan HTTP dengan menambahkan kode ini sebelum aplikasi Anda meminta data pengguna:
FacebookSdk.addLoggingBehavior(LoggingBehavior.REQUESTS);
Tindakan ini akan mencatat rincian permintaan HTTP dan merespons ke catatan konsol.
Anda harus mengajukan permintaan batch untuk data jika aplikasi Anda menangani jenis skenario ini:
Jika ingin mengurangi jumlah round-trip server, Anda dapat menggunakan permintaan batch. Misalnya kita mengambil data pengguna dan teman mereka:
GraphRequestBatch batch = new GraphRequestBatch( GraphRequest.newMeRequest( access_token, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject jsonObject, GraphResponse response) { // Application code for user } }), GraphRequest.newMyFriendsRequest( access_token, new GraphRequest.GraphJSONArrayCallback() { @Override public void onCompleted( JSONArray jsonArray, GraphResponse response) { // Application code for users friends } }) ); batch.addCallback(new GraphRequestBatch.Callback() { @Override public void onBatchCompleted(GraphRequestBatch graphRequests) { // Application code for when the batch finishes } }); batch.executeAsync();
Contoh di atas menunjukkan permintaan batch sebagai panggilan tidak sinkron. Jika kode ini berada di utas latar belakang, dan Anda ingin memblokirnya hingga panggilan selesai, Anda dapat memanggil batch.executeAndWait()
.
User
- Referensi Pengguna API GrafGraphRequestBatch
- Referensi untuk GraphRequestBatch
GraphRequest
- Referensi untuk GraphRequest