Saya sedang mengembangkan aplikasi iPhone, yang didasarkan pada komunikasi dengan server, dan saya ingin menggunakan mekanisme otentikasi Facebook.
Pada dasarnya, menurut saya seharusnya berfungsi seperti ini:
- Di aplikasi iPhone saya, pengguna masuk ke Facebook, menggunakan email dan kata sandinya.
- Pengguna mengizinkan akses ke datanya untuk aplikasi Facebook terkait.
- Aplikasi iPhone saya menerima token akses, setelah berhasil masuk.
- Dalam komunikasi lebih lanjut dengan server saya, aplikasi iPhone saya harus menggunakan token akses Facebook yang diterima (misalnya: dalam kueri).
- Ketika server saya menerima beberapa pertanyaan dari aplikasi iPhone, dengan token akses, itu harus menanyakan Facebook bahwa token ini valid (dan untuk siapa), dan jika ya, server harus menganggap bahwa pengguna diautentikasi dengan Facebook.
Pertanyaan saya adalah: bagaimana server harus bertanya kepada Facebook jika token akses yang diberikan valid? Saya rasa saya harus memeriksa apakah token tersebut valid untuk aplikasi Facebook saya.
Saya telah mencoba banyak kueri Facebook untuk membuat grafik API, yang saya temukan, tetapi tidak ada yang berfungsi seperti yang saya harapkan. Bisakah Anda memberi saya beberapa contoh?
iphone
facebook
authentication
Marcin
sumber
sumber
Jawaban:
Berikut adalah proses dua langkah yang dapat Anda gunakan untuk memvalidasi bahwa token akses pengguna adalah milik Aplikasi Anda:
1) Buat token Akses Aplikasi
( https://developers.facebook.com/docs/howtos/login/login-as-app/ )
2) Debug token Akses Pengguna
( https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/ )
Jika INPUT_TOKEN adalah token akses pengguna yang ingin Anda verifikasi, dan ACCESS_TOKEN adalah token aplikasi Anda yang Anda dapatkan dari langkah 1.
Endpoint debug pada dasarnya membuang semua informasi tentang token, jadi itu akan merespons dengan sesuatu seperti ini:
Jika token itu bukan dari "aplikasi Anda" maka akan mengembalikan respons kesalahan.
sumber
Saya berasumsi bahwa Anda sudah memiliki token akses di tangan. Dalam kasus seperti itu, cara termudah untuk memvalidasi token akses adalah dengan mengeluarkan permintaan berikut
Di sini ganti @accesstoken dengan token akses yang Anda miliki. Saya akan memecah url dan akan menjelaskan masing-masing.
Kami mengeluarkan permintaan api grafik di sini yang akan mengembalikan ID Pengguna Facebook dari pemilik token akses sebagai string JSON. Kata kunci 'saya' mewakili pengguna yang saat ini masuk atau pemilik token akses. Untuk token akses permintaan ini adalah parameter wajib.
Jika token akses yang diberikan tidak valid atau kedaluwarsa, Facebook hanya akan mengembalikan pesan kesalahan.
Untuk token akses yang valid, hasilnya akan terlihat seperti ini
sumber
Solusi lain adalah menggunakan
https://graph.facebook.com/app/?access_token=[user_access_token]
seperti yang dijelaskan oleh Dapatkan id aplikasi dari token akses pengguna (atau verifikasi aplikasi sumber untuk token) .Tampaknya ini adalah fitur yang tidak terdokumentasi, tetapi menampilkan JSON yang berisi id aplikasi tempat token itu dibuat. Jika token bukan untuk aplikasi Anda, token akan mengembalikan 400.
sumber
Di facebook versi terbaru (2.2) Anda dapat melakukannya dengan cara ini:
Output sampel:
sumber
Anda dapat mengunduh SDK Facebook untuk PHP dari GitHub .
sumber
Jika seorang pengguna telah memberikan Anda Facebook UID yang mereka klaim adalah milik mereka dan Anda ingin memeriksa apakah itu sah, ini adalah fungsi Python yang akan memverifikasinya dengan token akses mereka (implementasi dari jawaban Robin Jome):
sumber
Ini adalah satu-satunya metode aman untuk memverifikasi token pengguna hanya dengan satu permintaan:
Perhatikan bahwa tanda "|" pada URL di atas tidak digunakan sebagai OR tetapi sebagai pemisah dan harus ada setelah mengisi kolom lainnya.
Responsnya akan menjadi JSON seperti itu:
Referensi: https://developers.facebook.com/docs/facebook-login/access-tokens/#apptokens (metode di atas disebutkan di bagian bawah bagian ini)
sumber
Bersama dengan token akses, Facebook juga mengirimkan parameter "expires_in", yang merupakan nilai offset. Gunakan itu untuk menghitung kapan token akses akan kedaluwarsa sebagai NSDate. Kemudian ketika Anda perlu melakukan permintaan bandingkan tanggal saat ini dengan tanggal kedaluwarsa.
Coba juga untuk memeriksa kode status dan string respons yang dikirim kembali oleh Facebook.
sumber