Apakah Token Akses Facebook Oauth 2.0 Kedaluwarsa?

124

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?

Jared Brown
sumber
4
Untuk menambahkan beberapa detail ke pertanyaan ini: bahkan offline_access menjadi tidak valid ketika pengguna mengubah kata sandi Facebooknya. Jadi lebih baik bermain aman dan dapatkan kembali token akses baru jika Anda menerima kesalahan saat menggunakan yang lama.
Hoàng Long
2
Untuk menambahkan referensi: developers.facebook.com/blog/post/500
Hoàng Long
2
yo guys, Anda semua hanya sekedar rock. Apa pun pertanyaannya, saya baru saja menyelesaikannya ... Terima kasih semua
vinay
3
Sepertinya Facebook menghentikan izin offline_access pada tanggal 1 Mei. Di masa mendatang, semua token akses akan kedaluwarsa ketika "waktu kedaluwarsa" (60 hari) telah habis, pengguna mengubah sandinya, pengguna membatalkan otorisasi aplikasi Anda, atau pengguna keluar. API . NB Saya tidak yakin mengapa Facebook menyetel "waktu kadaluwarsa" baru menjadi 60 hari jika token akses masih akan kedaluwarsa saat keluar (sepertinya pengguna cenderung keluar dengan baik dalam waktu 60 hari). Mungkin saya melewatkan sesuatu ... kedaluwarsa
Steven Wexler
1
Perilaku access_token sekarang berubah, Anda harus mencari "Perubahan yang Dapat Menyebabkan Gangguan" Juli 2012 - izin offline_access tidak digunakan lagi dan access_token akan memiliki siklus hidup yang panjang.
qodeninja

Jawaban:

64

Setelah menggali sedikit, saya menemukan ini. Sepertinya itu jawabannya:

Diperbarui (11 / April / 2018)

  • Token akan kedaluwarsa setelah sekitar 60 hari.
  • Token akan disegarkan sekali sehari, hingga 90 hari, saat orang yang menggunakan aplikasi Anda membuat permintaan ke server Facebook.
  • Semua token akses perlu diperbarui setiap 90 hari dengan persetujuan dari orang yang menggunakan aplikasi Anda.

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/

Tendrid
sumber
2
Menanggapi hal ini, saya memulai perpustakaan open source yang mungkin berguna bagi kalian. Ini adalah lib oAuth yang bertujuan untuk mendukung semua jaringan sosial dengan implementasi oAuth. Ini sudah mendukung izin diperpanjang termasuk posting offline. code.google.com/p/socialoauth
Tendrid
Bahkan token offline_access kedaluwarsa jika pengguna mengubah sandi mereka di Facebook.
Bemmu
Sayangnya ini bukan solusi "bersih" untuk masalah yang dihadapi. Pertama atau semua permintaan izin ini memperingatkan pengguna akan izin tambahan (misalnya aplikasi ini akan dapat mengakses akun facebook Anda kapan saja), yang akan mematikan BANYAK klien potensial. Kedua, jika penggunaan mengubah kata sandinya, token ini tidak akan valid. Jadi perlu ada cara yang lebih baik (misalnya refresh token) untuk mendapatkan access_token baru, terutama untuk aplikasi web yang digerakkan oleh ajax klien-kaya.
Vladimir
24
Menurut dokumentasi api mereka, offline_access tidak lagi didukung mulai 2 Mei 2012.
Ben Lesh
@Tendrid Perpustakaan Anda hanya mendukung Facebook dan Twitter.
mareoraft
30

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_accessadalah: -

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 ..

PrateekSaluja
sumber
10
Saya ingin memberi tahu Anda bahwa fb telah berubah dalam apinya & sekarang tidak ada token seumur hidup yang tersedia, Sekarang akses offline akan aktif selama 60 hari.
PrateekSaluja
21

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/

Tripp Lilley
sumber
17

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.

David Pope
sumber
1
keraguan yang sama di sini david. apakah Anda menemukan informasi lebih lanjut tentang cara mengamankan token yang disimpan untuk akses offline?
neal aise
Dokumen Facebook sangat buruk, tetapi menurut saya situasinya cukup aman untuk mempertahankan token akses yang TIDAK diperoleh dengan offline_access. Meskipun benar bahwa siapa pun yang mendapatkan akses ke sana (saat pengguna FB masih masuk) dapat melakukan apa pun yang telah diberikan izin oleh pengguna kepada Anda, itu tidak seburuk itu karena token dibatalkan segera setelah pengguna keluar dari facebook dimana saja. Ini masih merupakan lubang keamanan (saya merasa aneh bahwa Anda tidak harus memberikan rahasia aplikasi Anda pada permintaan / me), tetapi ini tidak terbuka. Jika ada yang mengeluh, lebih baik jangan ragu untuk mengoreksi saya.
David Pope
8

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.

TerryMatula
sumber
3
Jika Anda meminta izin 'offline_access', token tidak akan kedaluwarsa.
Brendan Berg
1
@Brendan: Tapi itu akan menjadi tidak valid segera setelah pengguna mengubah kata sandi Facebook-nya
Hoàng Long
@ HoàngLong ada referensi untuk ini?
Charles Prakash Dasari
4

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.

imikay
sumber
3

Tekan ini untuk menukar token akses hidup pendek dengan yang berumur panjang / tidak kedaluwarsa (halaman):

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 
MPaulo
sumber
1

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.

Sreekanth P.
sumber
1

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} 
Tuan Tung
sumber
0

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.

Sreekanth P.
sumber
0

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 ...

Uri
sumber
0

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.

masukkan deskripsi gambar di sini

martinedwards
sumber