Menjalankan aplikasi Facebook di localhost

92

Saya berencana untuk terhubung ke obrolan Facebook dari localhost saya. Saya perlu mendapatkan kunci sesi dari Facebook. Ketika saya memberikan URL situs sebagai localhost:8080atau ip-address:8080tidak berfungsi.

Saya membaca tentang menyiapkan dua aplikasi dengan 2 kunci API yang berbeda, satu berjalan di dev m / c dan lainnya di localhost, tetapi saya tidak cukup mengerti.

Adakah yang bisa menjelaskan cara menjalankan aplikasi Facebook di localhost?

antusias
sumber
@Kavya Apakah Anda mencoba membuat aplikasi chat facebook desktop?
Searock
ya ... saya ingin masuk ke server facebook dari m / c saya ... melihat postingan tentang hal yang sama di sini stackoverflow.com/questions/1877913/… saya tidak mengerti ...
antusias
@Kavya Jika Anda ingin membuatnya, Anda belum menyebutkan bahasa pemrogramannya, mana yang akan Anda gunakan?
Searock
2
Saya telah menulis tutorial tentang itu.
ifaour
5
@xoxoxo Harap gunakan tanda baca dan ejaan yang benar dalam komunikasi Anda.
bart

Jawaban:

77

Saya menulis tutorial tentang ini beberapa waktu lalu.

Poin terpenting adalah "URL Situs":

URL Situs: http: // localhost / app_name /

Dimana struktur foldernya seperti ini:

app_name
¦   index.php
¦
+---canvas
¦   ¦   index.php
¦   ¦
¦   +---css
¦           main.css
¦           reset.css
¦
+---src
        facebook.php
        fb_ca_chain_bundle.crt

EDIT:
Kavya : bagaimana server FB mengenali localhost saya bahkan tanpa IP atau port ??

Saya tidak berpikir ini ada hubungannya dengan Facebook, saya kira karena srcparameter iframe dimuat dari sisi klien, itu akan memperlakukan URL lokal Anda seolah-olah Anda meletakkannya langsung di browser Anda.

Misalnya memiliki file di server online Anda dengan konten (misalnya online.php):

<iframe src="http://localhost/test.php" width="100%" height="100%">
    <p>Not supported!</p>
</iframe>

Dan di direktori root localhost Anda, miliki file test.php:

<?php echo "Hello from Localhost!"; ?>

Sekarang kunjungi http://your_domain.com/online.phpAnda akan melihat konten file localhost Anda!

Inilah sebabnya mengapa langganan realtime dan membatalkan otorisasi callback (hanya untuk menyebutkan) tidak akan berfungsi dengan URL localhost! karena Facebook akan melakukan ping (mengirim permintaan http) ke URL ini tetapi jelas server Facebook tidak akan menerjemahkan URL itu ke Anda!

ifaour
sumber
Sepertinya saya tidak dapat menemukan 'Url Situs' karena tahu di mana / atau di tab mana letaknya?
pengguna962206
apakah ini berfungsi untuk port 8080? saya masih mendapatkan kesalahan dengan url situs: http://localhost:8080/auth/index.htmldan halaman web yang memberikan kesalahan adalah http://localhost:8080/auth/index.htmldan baris salurannya adalah:channelUrl : '//localhost:8080/auth/channel.html',
necromancer
Saya tidak mengerti bagian 'struktur folder'. Jika Anda hanya masuk ke situs web Anda dengan Facebook untuk memuat komentar Facebook di halaman Anda, apakah Anda masih memerlukan struktur kanvas itu?
AlxVallejo
Ada beberapa alat tunneling yang memungkinkan Anda memberi host lokal Anda nama publik dan membuatnya terlihat, sehingga Facebook dapat melakukan ping balik. Saya buat satu, bernama PageKite , ada yang lain juga.
Bjarni Rúnar
29

jika Anda menggunakan localhost:

di Facebook -> Settings -> Basic, di kolom "App Domains" tulis "localhost", lalu klik "+ Add Platform" pilih "Web Site",

itu akan membuat dua bidang "Mobile Site URL" dan "Site URL", di "Site URL" tulis lagi "localhost".

bekerja untuk saya.

pengguna3531155
sumber
terima kasih, saya sudah mencoba solusi lain tetapi akhirnya ini yang berhasil,
rahulmishra
di bidang Url Situs saya punya: localhost , tetapi tidak berfungsi Saya juga menambahkan localhost ke bidang Domain Aplikasi seperti yang Anda sebutkan, ini berfungsi dengan baik terima kasih
RegarBoy
23

Anda juga dapat mengedit file 'host' dan membuat variasi lokal dari domain Anda.

Contoh

Jika alamat aplikasi facebook Anda yang sebenarnya adalah "example.com", Anda dapat membuat domain "localhost.example.com" (hanya dapat diakses dari pc Anda) di file "hosts" yang mengarah ke "localhost" dan menjalankan situs web lokal Anda di bawah domain ini. Anda bisa menipu Facebook dengan cara ini.

Mateusz Charytoniuk
sumber
1
bekerja seperti pesona, terima kasih! FYI- host terletak di windows 7 di C:/Windows/System32/drivers/etc/hostsatau di Ubuntu di/etc/hosts
pztrick
Metodologi yang sangat baik. Terima kasih.
Jerad
Apa yang harus saya setel ke Domain Aplikasi dan URL Kanvas?
Craig
Ini tidak akan memungkinkan Anda untuk menentukan port, jadi Anda harus menggunakan proxy terbalik untuk memungkinkan pengembangan di domain yang sama. Lihat stackoverflow.com/questions/10729034/…
MagicLAMP
7

Dalam pengaturan dasar aplikasi Anda ( https://developers.facebook.com/apps ) di bawah Pengaturan-> Dasar-> Pilih bagaimana aplikasi Anda terintegrasi dengan Facebook ...

Gunakan "URL Situs:" dan "URL Situs Seluler:" untuk menyimpan URL produksi dan pengembangan Anda. Kedua situs akan diizinkan untuk mengautentikasi. Saya hanya menggunakan Facebook untuk otentikasi, jadi saya tidak memerlukan fitur pengalihan situs seluler apa pun. Saya biasanya mengubah situs "Mobile Site URL:" ke situs "localhost: 12345" saya saat menguji otentikasi, dan kemudian menyetelnya kembali ke normal setelah saya selesai.

Carter Medlin
sumber
6

2013 Agustus. Facebook tidak mengizinkan untuk menyetel domain dengan port untuk suatu Aplikasi, seperti contoh "localhost: 3000".

Jadi Anda dapat menggunakan https://pagekite.net untuk mengarahkan Anda localhost:portke domain yang tepat.

Pengembang Rails dapat menggunakan http://progrium.com/localtunnel/ secara gratis.

  • Facebook hanya mengizinkan satu domain untuk Aplikasi pada saat itu. Jika Anda mencoba menambahkan yang lain, sebagai localhost, ini akan menunjukkan beberapa jenis kesalahan berbeda tentang domain. Pastikan untuk menggunakan hanya satu domain untuk panggilan balik dan untuk setelan domain aplikasi pada saat itu.
Gediminas
sumber
4

Jadi saya mendapatkan ini untuk bekerja hari ini. URL saya adalah http://localhost:8888. Domain yang saya berikan facebook adalah localhost. Saya pikir itu tidak berfungsi karena saya mencoba menarik data menggunakan FB.apimetode ini. Saya terus mendapatkan nama yang "tidak ditentukan" dan gambar tanpa sumber, jadi jelas tidak memiliki akses ke Grafik.

Kemudian saya menyadari bahwa masalah saya sebenarnya adalah saya hanya menyampaikan argumen pertama /mekepada FB.api, dan saya tidak memiliki tanda. Jadi, Anda harus menggunakan FB.getLoginStatusfungsi tersebut untuk mendapatkan token, yang harus ditambahkan ke /meargumen.

Lorenzo Mangubat
sumber
2

cukup tentukan url kanvas Anda sebagai http: // localhost / app_path .

JustCoding
sumber
@ifaour i follwoed ur tutorial .. its givin me error API Error Code: 191 API Error Deskripsi: URL yang ditentukan tidak dimiliki oleh aplikasi Pesan Kesalahan: redirect_uri tidak dimiliki oleh aplikasi. Saya tidak membutuhkannya untuk dijalankan di dalam fb ...
antusias
@Kavya cukup tambahkan url kanvas sebagai localost / app_path dan buka aplikasi fb, jadi itu akan menjalankan aplikasi Anda dari localhost. Maaf terlambat, karena sangat sibuk.
JustCoding
Cara lain untuk melakukannya adalah dengan memetakan URL situs / kanvas Anda secara lokal, alih-alih menentukan localhost. Anda kemudian dapat menggunakan domain target Anda. Saya tidak yakin arsitektur apa yang Anda kembangkan tetapi di bawah windows Anda akan mencapai ini dengan menyiapkan situs IIS Anda secara lokal dengan binding yang benar dan kemudian menambahkan alias ke file host Anda di C: \ Windows \ System32 \ drivers \ etc misalnya menambahkan baris 127.0.0.1 yourproject.yourdomain.net
dumbledad
2

Oke, saya tidak yakin ada apa dengan jawaban ini, tetapi saya akan memberi tahu Anda apa yang berhasil untuk saya seperti yang disarankan oleh pengembang senior di tempat kerja saya. Saya bekerja di Ruby on Rails dan menggunakan kode JavaScript Facebook untuk mendapatkan token akses.

Masalah: Untuk melakukan otentikasi, Facebook mengambil url dari bilah alamat Anda dan membandingkannya dengan yang ada di file mereka. Mereka tidak mengizinkan Anda menggunakan localhost:3000untuk alasan apa pun. Namun, Anda dapat menggunakan nama domain yang sepenuhnya dibuat-buat seperti yoursite.devdengan menjalankan server lokal dan menunjuk yoursite.devke 127.0.0.1:3000atau ke mana pun host lokal Anda tunjuk.

Langkah 1 : Instal atau perbarui Nginx

$ brew install nginx(instal) atau $ brew upgrade nginx(perbarui)

Langkah 2 : Buka file konfigurasi nginx Anda

/usr/local/etc/nginx/nginx.conf (biasanya di sini)

/opt/boxen/config/nginx/nginx.conf(jika Anda menggunakan Boxen)

Langkah 3 Tambahkan sedikit kode ini ke dalam http {}blok Anda

Gantilah proxy_passdengan kemana pun Anda ingin menunjuk yoursite.dev. Dalam kasus saya itu menggantikan localhost: 3000 atau yang setara127.0.0.1:3000

server {
  listen       yoursite.dev:80;
  server_name  yoursite.dev;
  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}

Langkah 4 : Edit file host Anda, di /etc/hostsMac untuk disertakan

127.0.0.1   yoursite.dev

File ini mengarahkan domain ke localhost. Nginx mendengarkan di localhost dan mengalihkan jika cocok dengan aturan.

Langkah 5 : Setiap kali Anda menggunakan lingkungan pengembang, Anda menggunakan yoursite.devdi bilah alamat alih-alih localhost:3000Facebook memasukkan Anda dengan benar.

Alex Levine
sumber
1

Forward adalah alat yang hebat untuk membantu pengembangan aplikasi facebook secara lokal, ini mendukung SSL sehingga hal sertifikat tidak menjadi masalah.

https://forwardhq.com/in-use/facebook

DISCLAIMER: Saya salah satu developer

blaed
sumber
1
Dan PageKite adalah salah satu pesaing Forward (saya berhasil!). ;-)
Bjarni Rúnar
Setelah mencoba segala cara di bawah sinar matahari, ini berhasil untuk saya. Satu-satunya masalah adalah bahwa semua penerusan itu benar-benar lambat. Lebih baik daripada tidak mendapatkan panggilan balik FB! Terima kasih
Craig
0

Anda perlu mengatur aplikasi Anda untuk menjalankan https untuk localhost

Anda dapat mengikuti langkah-langkah yang diberikan untuk mengatur HTTPS di ubuntu

https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-12-04

Anda perlu melakukan langkah-langkah berikut:

instal apache (jika Anda tidak punya)

sudo apt-get install apache2

Langkah Pertama — Aktifkan Modul SSL

sudo a2enmod ssl
sudo service apache2 restart

Langkah Kedua — Buat Direktori Baru

sudo mkdir /etc/apache2/ssl

Langkah Tiga — Buat Sertifikat SSL yang Ditandatangani Sendiri

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Dengan perintah ini, kita akan membuat sertifikat SSL yang ditandatangani sendiri dan kunci server yang melindunginya, dan menempatkan keduanya ke direktori baru. Baris terpenting adalah "Nama Umum". Masukkan nama domain resmi Anda di sini atau, jika Anda belum memilikinya, alamat IP situs Anda.

Nama Umum (misalnya FQDN server atau nama ANDA) []: example.com atau localhost

Langkah Empat — Siapkan Sertifikat

sudo vim /etc/apache2/sites-available/default-ssl

Temukan baris berikut dan edit dengan pengaturan Anda

ServerName localhost atau example.com

SSLEngine di SSLCertificateFile /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Langkah Lima — Aktifkan Virtual Host Baru

sudo a2ensite default-ssl
sudo service apache2 reload
wakaf
sumber
0

Sebuah tipuan:

Gunakan MAMPPRO dan buat: nama server: alamat yang TEPAT dari situs web Anda (misalnya: helloworld.com) ke situs Anda di disk Anda

Di Facebook: Jadi Anda juga dapat menyimpan URL Situs asli Anda (mis .: helloworld.com)

Sekarang Anda mengerti bahwa ketika Anda mengetik situs web Anda di bilah alamat, Anda berada di lokal ! ..dan ketika Anda ingin online, cukup nonaktifkan server di MAMP PRO ..

:)

Sebastien Horin
sumber
0

Tidak ada jawaban di atas yang berhasil untuk saya. Saya menjalankan FB API 2.5. Milik saya adalah kombinasi dari masalah yang mengarah pada kesuksesan setelah diselesaikan

  1. Buat aplikasi pengujian untuk memastikan bahwa itu dipertahankan dan dikelola seperti itu dan dapat dinonaktifkan saat ditayangkan
  2. Baca pesan kesalahan dengan benar :) - Saya harus mengaktifkan "Login OAuth Web" DENGAN "Login OAuth Klien"
  3. Gunakan https://www.whatismyip.com/ untuk mencari tahu IP saya saat ini
  4. Buat rekam A di Domain saya yaitu http://localhost.mydomain.com yang mengarah ke IP saya saat ini

Ini mungkin tidak ideal karena perubahan IP Dinamis dan seseorang mungkin dapat menggunakan DynDNS atau sesuatu yang serupa untuk membuat IP lebih "statis" tetapi itu berhasil untuk saya

Cornelius Parkin
sumber
0

Dalam kasus saya, masalahnya terungkap adalah chrome memblokir permintaan CORS dari localhost: 4200 ke situs web facebook api. Menjalankan Chrome dengan setelan ini: "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe" --disable-web-security --user-data-dir = "c: / chrome bekerja dengan sangat baik saat mengembangkan. Bahkan tanpa localhost ditambahkan ke pengaturan aplikasi facebook.

nomadev
sumber
berfungsi dengan baik untuk pengembangan lokal, tetapi dalam produksi Anda memerlukan izin facebook (yang diperoleh oleh panggilan opsi browser) untuk berbagi data dari facebook
radio_head