Token akses FB tahan lama bagi server untuk menarik info halaman FB

114

Saya sadar bahwa ada banyak pertanyaan tentang token akses Facebook dan kesedihan yang ditimbulkannya, tetapi meskipun banyak eksperimen dan membaca banyak artikel blog yang tidak jelas (FB dan lainnya), saya masih berjuang untuk mendapatkan jawaban yang jelas atas kebutuhan saya. . Izinkan saya secara ringkas memecah proses saya sejauh ini:

  • Saya membuat situs yang, sisi server, perlu menarik kiriman / status dari satu Halaman Facebook
  • Saya adalah admin Halaman Facebook itu
  • Saya telah membuat Aplikasi Facebook
  • Menggunakan Penjelajah API Grafik Facebook , saya telah membuat kunci berumur pendek, terhubung ke aplikasi dan akun saya, yang memberikan izin ke akun saya untuk melihat token akses untuk halaman saya
  • Saya telah mengubah kunci berumur pendek saya menjadi kunci berumur panjang (60 hari) ala skenario 4 dari ini

Dan di sinilah saya terjebak. Kunci 60 hari saya berfungsi dengan baik untuk server saya untuk menarik info yang diperlukan dari halaman, tetapi sejauh yang saya tahu, tidak ada cara untuk memperpanjang kunci 60 hari itu secara terprogram. Saya juga tidak tahu cara untuk menghasilkan kunci berumur pendek baru tanpa membuka secara manual ke Facebook Graph API Explorer dan membuatnya.

Karena server saya yang membuat permintaan ke API Facebook dan bukan sistem berbasis pengguna (di mana saya dapat dengan mudah meminta pengguna untuk mengotorisasi aplikasi Facebook lagi), ini menciptakan sistem yang sangat kikuk. Sejak Facebook tidak digunakan lagi offline_access, apakah benar-benar tidak ada cara permanen agar server saya menarik info dari halaman saya sendiri? Apakah saya benar-benar harus membuat kunci baru dengan tangan dan memperbarui server saya secara manual setiap 60 hari?

Atau apakah ada sesuatu yang saya lewatkan?

Memperbarui:

Panduan langkah demi langkah yang sebelumnya ditemukan di sini telah dipindahkan ke jawabannya sendiri .

redhotvengeance
sumber
Ini luar biasa. Saya berada dalam situasi yang sama dan sedang mencari beberapa info tentang topik ini. Apakah aman bahwa token ini tidak melanggar kebijakan platform FB? Hanya meminta untuk memastikan.
onigunn
2
@asrijaal Facebook sendiri dokumentasi (lihat Skenario 5) mengatakan bahwa token akses halaman ini tidak berakhir. Menurut saya aman untuk berasumsi bahwa mereka mematuhi kebijakan Facebook.
redhotvengeance
"Saya pikir akan lebih baik untuk meninggalkan proses langkah demi langkah yang jelas" - surga melarang :) Terima kasih @redhotvengeance
Steve McGill
Ada kesalahan ketik pada url token akses halaman Anda. Haruskah menjadi? bukan akun & setelah. Menghabiskan beberapa saat mencoba mencari tahu mengapa ini tidak berhasil. : P
Joren
@Joren Memang - sudah diperbaiki sekarang. Terima kasih!
redhotvengeance

Jawaban:

188

Ini adalah langkah-langkah yang sebelumnya ada dalam pertanyaan - mereka telah dipindahkan ke jawaban ini.

Setelah menemukan bahwa dimungkinkan untuk menghasilkan Token Akses Halaman Facebook yang tidak kedaluwarsa (dengan bantuan dari @Igy), berikut adalah langkah-langkah yang jelas dan jelas untuk semua orang yang menginginkan hal yang sama:

  1. Pastikan Anda adalah admin halaman FB yang ingin Anda tarik informasinya
  2. Buat Aplikasi FB (harus dengan akun pengguna yang sama dengan admin halaman)
  3. Buka Penjelajah API Grafik Facebook
  4. Di kanan atas, pilih Aplikasi FB yang Anda buat dari daftar drop-down "Aplikasi"
  5. Klik "Dapatkan Token Akses"
  6. Pastikan Anda menambahkan manage_pages izin
  7. Ubah token akses berumur pendek ini menjadi token berumur panjang dengan melakukan panggilan API Grafik ini: https://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
  8. Ambil token akses berumur panjang baru yang dikembalikan
  9. Lakukan panggilan API Grafik untuk melihat akun Anda menggunakan token akses berumur panjang baru: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. Ambil access_token halaman yang akan Anda informasinya
  11. Lint token untuk melihat apakah sudah disetel ke Expires: Never!

Itu harus dilakukan. Anda sekarang harus memiliki Token Akses Halaman Facebook yang tidak kedaluwarsa, kecuali:

  • Anda mengubah kata sandi akun Facebook Anda
  • Anda kehilangan akses admin untuk halaman target
  • Anda menghapus atau membatalkan otorisasi Aplikasi Facebook Anda

Semua ini akan menyebabkan token akses menjadi tidak valid.

Jika Anda mendapatkan (#100) Tried accessing nonexisting field (accounts) on node type (Page), buka Access Token Debugger , salin nilai User ID, dan gunakan untuk mengganti bagian "saya" dari URL di langkah 9.

redhotvengeance
sumber
2
Bagaimana dan di mana saya melakukan langkah 6?
Stefan Müller
5
@ StefanMüller Saat Anda mengklik "Dapatkan Token Akses" pada halaman Graph API Explorer, dialog "Pilih Izin" akan muncul. The manage_pagespilihan adalah di bawah Extended Permissionstab.
redhotvengeance
2
Bagus! Ini bekerja seperti pesona, dan ini diterbitkan sebagai HALAMAN, bukan sebagai pengguna.
Benjamin Piette
3
Saya yakin ini sudah ketinggalan zaman sekarang. dan Anda hanya mendapatkan token akses yang kedaluwarsa dalam waktu sekitar dua bulan.
Qaiser Wali
7
Saya telah melakukan semua itu sekarang dan berhasil kecuali bahwa token id yang berumur panjang berakhir setelah 2 bulan dan tidak terbatas. Juga Acces Token Debugger memiliki tautan di bagian bawah formulir untuk memperpanjang token akses berumur pendek ke token akses berumur panjang.
SlimIT
15

Ini tercakup dalam penghentian Akses Offline dokumen

Gunakan token 60-hari bagi admin halaman untuk mengambil Token Akses Halaman (melalui /PAGE_ID?fields=access_tokenatau /me/accounts) - token akses Halaman tidak akan memiliki waktu kedaluwarsa

Igy
sumber
5
Mendesah. Memang, ini sepertinya tiketnya. Saya berani bersumpah bahwa saya mencoba setiap kemungkinan kombinasi dari langkah-langkah ini - tampaknya saya melewatkan salah satu yang benar-benar berfungsi. Sungguh tindakan yang benar-benar berbelit-belit. Terima kasih banyak atas bantuan Anda!
redhotvengeance
1
Begitu banyak bagian di seluruh internet, ini salah satu yang benar-benar berfungsi.
Ernesto
Apakah ada cara untuk mendapatkan 60 hari ini page_access_tokendengan kode dalam javascript? Seperti cara mendapatkan user_access_token> FB.getAuthResponse()['accessToken'];Terima kasih!
Tulon
3

Pendekatan yang berhasil pada 2019

Saya baru-baru ini mencoba mencapai sesuatu yang serupa (dengan kasus penggunaan yang dijelaskan di utas ini), tetapi saya ingin memastikan untuk menghormati kebijakan Facebook saat ini, jadi saya melakukan sedikit riset dan di sini saya membagikan apa yang saya temukan.

Kasus penggunaan saya

Jadi, seperti yang sudah saya katakan, kasus penggunaan saya sangat mirip dengan yang dijelaskan di sini; itu adalah:

  • Saya melakukan beberapa pekerjaan untuk distrik sekolah.
  • Mereka menggunakan perangkat lunak untuk mengelola hampir semua hal yang berkaitan dengan transportasi sekolah.
  • Alat itu memungkinkan mereka untuk mengirim pemberitahuan email (ke pelanggan) saat mereka mempublikasikan peringatan penundaan bus dan peringatan penutupan sekolah.
  • Banyak orang di komunitas mengikuti organisasi di halaman Facebook mereka, dan itulah satu-satunya tempat mereka mencari notifikasi tersebut.
  • Jadi, seorang karyawan organisasi harus mempublikasikan setiap pemberitahuan secara manual di halaman Facebook (selain membuatnya di perangkat lunak transportasi). Selain itu, pemberitahuan tersebut akhirnya kedaluwarsa (atau dihapus begitu saja sebelum kedaluwarsa), jadi karyawan harus kembali lagi nanti untuk menghapusnya secara manual juga.
  • Ini adalah waktu yang singkat, jadi apa yang kami coba lakukan di sini adalah mengembangkan sebagai sistem sederhana yang secara berkala melakukan polling database alat perangkat lunak untuk pemberitahuan baru (dan kedaluwarsa) dan memperbaruinya (yaitu menambah dan menghapus) di halaman Facebook.

Ini, dalam pandangan saya, kasus penggunaan yang sah, tetapi saya tidak yakin bagaimana menerapkannya dengan cara yang sejalan dengan kebijakan Facebook.

Jawaban yang diterima

Saya mengikuti langkah-langkah dari jawaban yang diterima dan berhasil, kecuali bahwa hal-hal tampaknya telah berubah: sekarang, meskipun token halaman yang dihasilkan tidak kedaluwarsa, access to dataakan kedaluwarsa setelah sekitar 60 hari. Anda juga akan melihatnya jika Anda mengikuti prosedur dan memeriksa token halaman di Alat Debugger Token FB .

Selain itu, fakta bahwa token halaman yang dihasilkan terkait dengan akun pengguna juga disayangkan, karena jika pengguna memperbarui kata sandinya, token halaman juga menjadi tidak valid.

Bagaimana melakukannya di 2019

Setelah beberapa jam melakukan penelitian, saya menemukan artikel dokumentasi Facebook berikut: Login Bisnis untuk Bisnis Langsung .

Ternyata sekarang dimungkinkan, mengikuti langkah-langkah yang dijelaskan dalam artikel di atas, untuk menghasilkan token halaman yang tidak terkait dengan akun pengguna Facebook tertentu dan yang tidak akan kedaluwarsa (kecuali Aplikasi FB dihapus atau token aplikasi yang mendasarinya terhapus, Anda tahu ...)

Jadi inilah langkah-langkah dan bagian terpentingnya:

  • Anda membutuhkan akun Manajer Bisnis .
    • Verifikasi akan diperlukan dan kontrak digital harus ditandatangani.
  • Anda perlu menambahkan halaman Facebook target ke akun itu.
  • Anda perlu membuat Aplikasi Facebook, dan mentransfer aplikasi tersebut ke akun Business Manager yang sama juga.
  • Aplikasi harus melalui proses peninjauan Facebook, karena izin berikut akan dibutuhkan: manage_pagesdan publish_pages.
    • Catatan penting Untuk posting yang dibuat menggunakan token halaman yang dibuat agar dapat dilihat oleh pengguna selain administrator aplikasi, aplikasi tersebut harus sudah diterbitkan dan disetujui.
    • Anda masih dapat bereksperimen dengan konsep tanpa mengirimkannya untuk ditinjau, tetapi postingan tidak akan terlihat untuk umum.
  • Di akun Business Manager (hanya setelah aplikasi dan halaman Anda ditambahkan ke akun), Anda perlu membuat apa yang disebut Pengguna Sistem , dan memberikan peran (atau izin) admin pengguna tersebut ke halaman Facebook target.
    • Pengguna sistem dimiliki oleh akun Business Manager, dan tidak terikat dengan pengguna tertentu. Pemahaman saya saat ini adalah bahwa salah satu kasus penggunaan utama untuk pengguna sistem adalah akses terprogram ke API Grafik Facebook (hanya yang kami butuhkan).
  • Kemudian, untuk pengguna sistem itu, Anda perlu membuat token akses (yang tidak akan pernah kedaluwarsa). Anda akan diminta untuk memilih aplikasi mana. Anda kemudian akan memilih aplikasi target Anda.
  • Anda kemudian perlu menggunakan token aplikasi yang dihasilkan untuk membuat token halaman, yang juga tidak akan pernah kedaluwarsa. Prosedur dijelaskan dalam artikel ini sebagai:
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
  • Itu dia.

Token itu tidak akan pernah kedaluwarsa, dan tidak akan terikat dengan pengguna Facebook tertentu, jadi itulah yang kami butuhkan!

Bagian terakhir adalah memastikan bahwa aplikasi Facebook Anda disetujui oleh Facebook. Itu sebenarnya bagian yang paling penting, karena seluruh prosedur tidak ada gunanya jika orang tidak melihat kiriman kami.

Saya ingin mengetahui dengan pasti bahwa saya dapat mengandalkan prosedur di atas untuk membangun sesuatu untuk klien saya tanpa ditolak Facebook pada akhirnya, jadi, sebelumnya (yaitu sebelum mulai mengerjakan proyek klien saya), saya menjalani seluruh proses membuat halaman, aplikasi, akun Business Manager, dll. Saya memverifikasi bisnis saya. Saya mengirimkan aplikasi saya untuk ditinjau. Dalam permintaan saya, saya sangat spesifik tentang kasus penggunaan saya dan menekankan bahwa aplikasi itu untuk "penggunaan sendiri" (yaitu bahwa organisasi mengembangkan aplikasi untuk dirinya sendiri, bukan untuk pengguna Facebook lainnya). Saya disetujui tanpa kurang dari 24 jam.

Beberapa catatan lain tentang proses peninjauan aplikasi:

  • Saya harus memilih platform untuk aplikasi, jadi saya memilih situs web .
  • Saya harus menunjukkan mengapa aplikasi membutuhkan dua izin dan bagaimana itu akan menggunakannya.
  • Saya harus menunjukkan mengapa pengulas tidak akan dapat masuk ke aplikasi saya dan mencobanya (yaitu karena aplikasi akan digunakan oleh proses pekerja).
  • Untuk screencast wajib, saya hanya menyajikan operasi manual di terminal menggunakan curlutilitas (untuk menghasilkan token halaman dan membuat posting ke halaman Facebook). Saya juga menunjukkan bagaimana saya menggunakan Business Manager untuk menautkan pengguna sistem ke halaman dan menghasilkan token, dan seterusnya.
  • Sekali lagi, saya sangat spesifik tentang kasus penggunaan saya, dan saya pikir itu membantu.

Saya berharap informasi ini bermanfaat bagi orang-orang dengan kasus penggunaan serupa.

focorner
sumber
1

Terima kasih banyak kepada @redhotvengeance untuk panduan langkah demi langkah.

Setelah beberapa lama, sekarang ada penjelasan yang jelas di dokumentasi Facebook:

https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

Memperluas Token Akses Halaman

Aplikasi dapat mengambil token akses halaman dari pengguna admin Halaman saat mereka mengautentikasi dengan izin manage_pages. Jika token akses pengguna yang digunakan untuk mengambil token akses halaman ini berumur pendek, token akses halaman juga berumur pendek.

Untuk mendapatkan token akses halaman yang tahan lama, tukarkan token akses pengguna dengan yang berumur panjang, seperti di atas, lalu minta token akses halaman. Token akses halaman yang dihasilkan tidak akan memiliki waktu kedaluwarsa.

Athlan
sumber
0

Anda juga dapat menyalin dan menempel dari dasbor aplikasi di facebook. Langkah langkah:

  1. Buka https://developers.facebook.com

  2. Pilih aplikasi Anda di sudut kanan atas halaman (gambar seperti apa)

  3. Klik Messenger dari opsi di sebelah kiri (ini akan masuk ke pengaturan secara otomatis) (gambar seperti apa)
  4. Buka bagian "Pembuatan Token" di halaman. Pilih halaman mana Anda ingin membuat token. (gambar seperti apa bagian itu)
  5. Salin dan tempel token halaman Anda di mana pun Anda membutuhkannya.

Perlu diingat bahwa meskipun secara teori token Anda tidak akan kedaluwarsa, token itu terkait langsung dengan akun facebook apa pun yang Anda masuki. Jadi katakanlah Anda mengubah kata sandi atau Anda menghapus izin dari antara akun Anda dan aplikasi Anda, maka token Anda tidak akan valid lagi.

Heidi
sumber