Saya bermain-main dengan otorisasi Oauth 2.0 di Facebook dan bertanya-tanya apakah token akses Facebook pernah kedaluwarsa. Jika ya, apakah ada cara untuk meminta token akses yang tahan lama?
Saya bermain-main dengan otorisasi Oauth 2.0 di Facebook dan bertanya-tanya apakah token akses Facebook pernah kedaluwarsa. Jika ya, apakah ada cara untuk meminta token akses yang tahan lama?
Jawaban:
Setelah menggali sedikit, saya menemukan ini. Sepertinya itu jawabannya:
Diperbarui (11 / April / 2018)
Pengumuman perubahan Facebook (10/04/2018)
Halaman kedaluwarsa token yang diperbarui Facebook (10/04/2018)
offline_access: Memungkinkan aplikasi Anda melakukan permintaan resmi atas nama pengguna kapan saja. Secara default, sebagian besar token akses kedaluwarsa setelah jangka waktu yang singkat untuk memastikan aplikasi hanya membuat permintaan atas nama pengguna saat secara aktif menggunakan aplikasi. Izin ini membuat token akses yang dikembalikan oleh titik akhir OAuth kami berumur panjang.
Ini adalah nilai izin yang diminta.
http://developers.facebook.com/docs/authentication/permissions
MEMPERBARUI
izin offline_access telah dihapus beberapa waktu yang lalu.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Coba ini mungkin akan membantu penuh untuk Anda
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Untuk mendapatkan Token Akses seumur hidup, Anda harus menggunakan scope=offline_access
Artinya scope=offline_access
adalah: -
Memungkinkan aplikasi Anda melakukan permintaan resmi atas nama pengguna kapan saja. Secara default, sebagian besar token akses kedaluwarsa setelah jangka waktu yang singkat untuk memastikan aplikasi hanya membuat permintaan atas nama pengguna saat secara aktif menggunakan aplikasi. Izin ini membuat token akses yang dikembalikan oleh titik akhir OAuth kami berumur panjang.
Tetapi menurut peningkatan masa depan facebook, fungsionalitas offline_acees akan dihentikan selamanya mulai 3 Oktober 2012. dan pengguna akan diberikan token akses berumur 60 hari dan sebelum berakhirnya token akses, Facebook akan memberi tahu atau Anda bisa mendapatkan token khusus. fungsi notifikasi mengambil nilai kedaluwarsa dari Facebook Api ..
Perhatikan bahwa Facebook sekarang menghentikan izin offline_access untuk mendukung token yang Anda dapat meminta "peningkatan" ke kadaluwarsa. Saya baru saja berurusan dengan ini, saya sendiri, jadi saya tidak punya banyak hal untuk dikatakan, tetapi dokumen ini dapat membantu:
https://developers.facebook.com/docs/offline-access-deprecation/
Saya datang ke sini dengan pertanyaan yang sama dengan OP, tetapi jawaban yang menyarankan penggunaan offline_access menimbulkan tanda bahaya bagi saya.
Dari segi keamanan, mendapatkan akses offline ke akun Facebook pengguna secara kualitatif berbeda dan jauh lebih kuat daripada hanya menggunakan Facebook untuk masuk tunggal, dan tidak boleh digunakan dengan mudah (kecuali Anda benar-benar membutuhkannya). Saat pengguna memberikan izin ini, "aplikasi" dapat memeriksa akun pengguna dari mana saja kapan saja. Saya meletakkan "aplikasi" dalam tanda kutip karena sebenarnya alat apa pun yang memiliki kredensial - Anda dapat membuat skrip seluruh rangkaian alat yang tidak ada hubungannya dengan server web yang dapat mengakses info apa pun yang telah disetujui pengguna untuk dibagikan kepada mereka kredensial.
Saya tidak akan menggunakan fitur ini untuk mengatasi masa pakai token yang singkat; itu bukan tujuan yang dimaksudkan. Memang, masa pakai token itu sendiri adalah fitur keamanan. Saya masih mencari detail tentang penggunaan yang benar dari token ini (Bisakah saya mempertahankannya? Bagaimana cara / haruskah saya mengamankannya? Apakah Facebook menyematkan "token penyegaran" OAuth 2.0 di dalam token utama? Jika tidak, di mana dan / atau bagaimana cara menyegarkan?), tetapi saya cukup yakin offline_access bukanlah cara yang benar.
Ya, mereka benar-benar kedaluwarsa. Ada nilai 'kedaluwarsa' yang diberikan bersama dengan 'access_token', dan dari apa yang saya tahu itu sekitar 2 jam. Saya telah mencari, tetapi saya tidak menemukan cara untuk meminta waktu kedaluwarsa yang lebih lama.
karena saya memiliki masalah yang sama - lihat posting luar biasa tentang topik ini dari ben biddington, yang mengklarifikasi semua masalah ini dengan token yang salah dan jenis yang tepat untuk dikirim untuk permintaan.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Anda selalu dapat menyegarkan token akses pengguna setiap kali pengguna masuk ke situs Anda melalui facebook. Akses offline tidak dapat menjamin Anda mendapatkan token akses seumur hidup, token akses berubah setiap kali pengguna mencabut akses aplikasi Anda atau pengguna mengubah kata sandinya.
Dikutip dari facebook http://developers.facebook.com/docs/authentication/
Catatan: Jika aplikasi tidak meminta izin offline_access, token akses dibatasi waktu. Token akses berbatas waktu juga menjadi tidak valid saat pengguna keluar dari Facebook. Jika aplikasi telah memperoleh izin offline_access dari pengguna, token akses tidak memiliki masa kedaluwarsa. Namun itu menjadi tidak valid setiap kali pengguna mengubah kata sandinya.
Asumsikan Anda menyimpan uid facebook pengguna dan token akses di tabel pengguna di database Anda, setiap kali pengguna mengklik tombol "Login dengan facebook", Anda memeriksa status login menggunakan facebook Javascript API, lalu memeriksa status koneksi dari respons , jika pengguna telah terhubung ke situs Anda, Anda kemudian dapat memperbarui token akses di tabel.
masuk ke akun facebook dan edit pengaturan aplikasi Anda (akun -> pengaturan aplikasi -> izin tambahan dari aplikasi yang menggunakan akun Anda). hapus centang izin (Akses data saya saat saya tidak menggunakan aplikasi (offline_access)). Kemudian wajah buku akan mengeluarkan token baru ketika Anda masuk ke aplikasi.
Dasar token facebook kedaluwarsa sekitar satu jam. Tetapi Anda dapat menggunakan token 'pertukaran' untuk mendapatkan token berumur panjang https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
periksa hal-hal berikut saat Anda berinteraksi dengan api grafik facebook.
1) URL koneksi aplikasi harus menjadi basis dari URL koneksi "redirect_uri" Anda: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) "redirect_uri Anda "harus sama dalam kedua kasus (saat Anda meminta kode verifikasi dan meminta access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) Anda harus menyandikan argumen saat Anda meminta access_token 4) tidak boleh meneruskan argumen (type = client_cred) saat Anda meminta access_token. server otorisasi akan mengeluarkan token tanpa bagian sesi. kita tidak dapat menggunakan token ini dengan alias "saya" dalam api grafik. Token ini akan memiliki panjang (40) tetapi token dengan bagian sesi akan memiliki panjang (81). Token akses tanpa bagian sesi akan berfungsi dengan beberapa kasus
misalnya: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Tetapi API Grafik dengan alias "saya" hanya akan bekerja dengan token dengan bagian sesi.
Saya tidak tahu kapan tepatnya token kedaluwarsa, tetapi mereka melakukannya, jika tidak, tidak akan ada opsi untuk memberikan izin offline.
Bagaimanapun, terkadang meminta pengguna untuk memberikan izin offline adalah hal yang berlebihan. Bergantung pada kebutuhan Anda, mungkin cukup bahwa token tetap valid selama situs web dibuka di browser pengguna. Untuk ini mungkin ada solusi yang lebih sederhana - memasukkan kembali pengguna secara berkala menggunakan iframe: login ulang otomatis facebook dari cookie php
Bekerja untuk saya ...
Ini adil beberapa tahun kemudian, tetapi Facebook Graph API Explorer sekarang memiliki simbol info kecil di sebelah token akses yang memungkinkan Anda untuk mengakses aplikasi alat token akses, dan memperpanjang token API selama beberapa bulan. Mungkin berguna selama pengembangan.