Facebook uygulamasını localhost'ta çalıştırma


92

Yerel ana bilgisayarımdan Facebook sohbete bağlanmayı planlıyorum. Facebook'tan oturum anahtarını almam gerekecek. Site URL'sini verdiğimde localhost:8080veya ip-address:8080çalışmıyor.

Biri dev m / c ve diğeri localhost üzerinde çalışan 2 farklı API anahtarıyla iki uygulama kurmayı okudum, ancak tam olarak anlayamadım.

Herhangi biri localhost'ta bir Facebook uygulamasının nasıl çalıştırılacağını açıklayabilir mi?


@Kavya Masaüstü facebook sohbet uygulaması oluşturmaya mı çalışıyorsunuz?
Searock

evet ... facebook sunucusuna m / c'imden vurmak istiyorum ... burada aynı konuyla ilgili bir gönderi gördüm stackoverflow.com/questions/1877913/… anladım ...
coşkulu

@Kavya Bir tane oluşturmak istiyorsanız, kullanacağınız programlama dilinden bahsetmediniz mi?
Searock

2
Bununla ilgili bir eğitim yazdım .
ifaour

5
@xoxoxo Lütfen iletişiminizde doğru noktalama ve yazım kullanın.
bart

Yanıtlar:


77

Bir süre önce bununla ilgili bir eğitim yazdım .

En önemli nokta "Site URL'si" dir:

Site URL'si: http: // localhost / app_name /

Klasör yapısının aşağıdaki gibi olduğu yerlerde:

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

DÜZENLEME:
Kavya : FB sunucusu bir IP veya port olmasa bile localhost'umu nasıl tanır?

Bunun Facebook ile bir ilgisi olduğunu sanmıyorum, sanırım iframe srcparametresi istemci tarafından yüklendiğinden, yerel URL'nizi doğrudan tarayıcınıza koyuyormuşsunuz gibi davranacaktır.

Örneğin, çevrimiçi sunucunuzda içeriğe sahip bir dosya var (örneğin online.php):

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

Ve localhost kök dizininizde şu dosyaya sahip olun test.php:

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

Şimdi ziyaret edin http://your_domain.com/online.php, localhost dosyanızın içeriğini göreceksiniz!

Bu yüzden gerçek zamanlı abonelikleri ve yetkisini kaldırmak geri aramalar (sadece söz etmek) olmaz localhost URL'ler ile çalışma! çünkü Facebook bu URL'lere ping atacak (http istekleri gönderecek) ancak açıkçası Facebook sunucusu bu URL'leri sizinkine çevirmeyecek!


'Site URL'sini' nerede / veya hangi sekmenin bulunduğu konusunda hiçbir fikrim yok gibi görünüyor?
user962206

bu 8080 bağlantı noktası için çalışıyor mu? Hala site url'si ile ilgili hatayı alıyorum: http://localhost:8080/auth/index.htmlve hatayı veren web sayfası http://localhost:8080/auth/index.htmlve channelurl satırı:channelUrl : '//localhost:8080/auth/channel.html',
necromancer

'Klasör yapısı' kısmını anlamıyorum. Sayfanıza Facebook yorumlarını yüklemek için sadece Facebook ile web sitenize giriş yapıyorsanız, yine de bu tuval yapısına ihtiyacınız var mı?
AlxVallejo

Facebook'un geri ping atabilmesi için localhost'unuza genel bir ad vermenize ve görünür hale getirmenize olanak tanıyan bazı tünel oluşturma araçları vardır. PageKite adında bir tane yarattım , başkaları da var.
Bjarni Rúnar

29

localhost kullanıyorsanız:

Facebook'ta -> Ayarlar -> Temel, "Uygulama Etki Alanları" alanına "localhost" yazın, ardından "+ Platform Ekle" ye tıklayın "Web Sitesi" ni seçin,

"Site URL'si" içinde "Mobil Site URL'si" ve "Site URL'si" olmak üzere iki alan oluşturacak ve "yerel ana makine" yi yeniden yazacaktır.

benim için çalışıyor.


teşekkürler, diğer çözümleri denedim ama sonunda işe
yarayan buydu

Site Url alanında sahip oldum: localhost , ancak çalışmadı Ayrıca belirttiğiniz gibi App Domain alanına localhost ekledim, bu iyi çalışıyor teşekkürler
RegarBoy

23

Ayrıca 'hosts' dosyasını düzenleyebilir ve etki alanınızın yerel varyasyonunu oluşturabilirsiniz.

Misal

Gerçek facebook uygulama adresiniz "example.com" ise, "localhost" a işaret eden "hosts" dosyanızda "localhost.example.com" (yalnızca bilgisayarınızdan erişilebilir) etki alanı oluşturabilir ve yerel web sitenizi bu etki alanı altında çalıştırabilirsiniz. Facebook'u bu şekilde kandırabilirsiniz.


1
bir cazibe gibi çalışıyor, teşekkürler! Bilginize - ana bilgisayarlar, C:/Windows/System32/drivers/etc/hostsUbuntu'da veya Windows 7'de bulunur/etc/hosts
pztrick

Mükemmel metodoloji. Teşekkürler.
Jerad

Uygulama Etki Alanlarını ve Tuval URL'sini neye ayarlamalıyım?
Craig

Ancak bu, bağlantı noktasını belirlemenize izin vermez, bu nedenle aynı etki alanında geliştirmeye izin vermek için ters bir proxy kullanmanız gerekir. Stackoverflow.com/questions/10729034/… sayfasına
MagicLAMP

7

Uygulamanızın temel ayarlarında ( https://developers.facebook.com/apps ) Ayarlar-> Temel-> altında Uygulamanızın Facebook ile nasıl entegre olacağını seçin ...

Üretim ve geliştirme URL'lerinizi saklamak için "Site URL'si:" ve "Mobil Site URL'si:" kullanın. Her iki sitenin de kimlik doğrulamasına izin verilecektir. Facebook'u yalnızca kimlik doğrulama için kullanıyorum, bu nedenle mobil site yönlendirme özelliklerinin hiçbirine ihtiyacım yok. Kimlik doğrulamasını test ederken genellikle "Mobil Site URL'si:" ni "localhost: 12345" sitem olarak değiştiririm ve işim bittiğinde tekrar normale döndürürüm.


6

2013 Ağustos. Facebook, örneğin "localhost: 3000" gibi bir Uygulama için portlu alan adı ayarlamaya izin vermez.

Böylece https://pagekite.net kullanaraklocalhost:port uygun alan kullanabilirsiniz.

Rails geliştiricileri http://progrium.com/localtunnel/'i ücretsiz olarak kullanabilir .

  • Facebook aynı anda Uygulama için yalnızca bir etki alanına izin verir. Localhost olarak başka bir tane eklemeye çalışıyorsanız, etki alanıyla ilgili bir tür farklı hata gösterecektir. O sırada geri arama ve uygulama alanı ayarı için yalnızca bir alan kullandığınızdan emin olun.

4

Bu yüzden bugün işe koydum. URL’m http://localhost:8888. Facebook'a verdiğim etki alanı localhost. Çalışmadığını düşündüm çünkü veri çekmeye çalışıyordum.FB.apiYöntemi . "Tanımlanmamış" bir isim ve kaynak olmadan bir resim almaya devam ettim, bu yüzden kesinlikle Graph'a erişimim olmadı.

Daha sonra benim sorunum sadece ilk argüman geçiyordu gerçekten olduğunu fark /meetmek FB.apive bir belirteç yoktu. Bu nedenle FB.getLoginStatus, /meargümana eklenmesi gereken bir belirteç almak için işlevi kullanmanız gerekir .


2

tuval url'nizi http: // localhost / app_path olarak belirtmeniz yeterlidir .


@ifaour i follwoed ur tutorial .. onun givin me hatası API Hata Kodu: 191 API Hatası Açıklama: Belirtilen URL, uygulamaya ait değil Hata Mesajı: redirect_uri uygulamaya ait değil. FB'nin içinde çalışmasına ihtiyacım yok ...
coşkulu

@Kavya sadece canvas url'yi localhost / app_path olarak ekleyin ve fb uygulamasını açın, böylece uygulamanızı localhost'tan çalıştıracak. Geç için üzgünüm , çok meşgul.
JustCoding

Bunu yapmanın başka bir yolu da localhost belirtmek yerine site / tuval URL'nizi yerel olarak eşlemektir. Daha sonra hedef alanınızı kullanabilirsiniz. Hangi mimaride geliştirdiğinizden emin değilim, ancak Windows altında bunu, IIS sitenizi yerel olarak doğru bağlamalarla ayarlayarak ve ardından ana bilgisayar dosyanıza C: \ Windows \ System32 \ drivers \ etc içinde bir takma ad ekleyerek elde edersiniz. örneğin 127.0.0.1 projeniz.etkialaniniz.net satırını eklemek
dumbledad

2

Tamam, bu cevapların ne olduğundan emin değilim ama işimdeki kıdemli bir geliştiricinin önerdiği şekilde benim için neyin işe yaradığını size bildireceğim. Ruby on Rails'de çalışıyorum ve erişim belirteçleri almak için Facebook'un JavaScript kodunu kullanıyorum.

Sorun: Kimlik doğrulaması yapmak için Facebook, url'yi adres çubuğunuzdan alıyor ve bunu dosyadakilerle karşılaştırıyor. localhost:3000Sebep ne olursa olsun kullanmanıza izin vermiyorlar . Ancak, böyle tamamen uydurma alan adını kullanabilirsiniz yoursite.devyerel sunucu üzerinde çalışmakta ve işaret ederek yoursite.devkarşı 127.0.0.1:3000veya her yerde localhost işaret edildi.

Adım 1 : Nginx'i kurun veya güncelleyin

$ brew install nginx(yükle) veya $ brew upgrade nginx(güncelle)

2. Adım : nginx yapılandırma dosyanızı açın

/usr/local/etc/nginx/nginx.conf (genellikle burada)

/opt/boxen/config/nginx/nginx.conf(Boxen kullanıyorsanız)

Adım 3 Bu kod parçasını http {}bloğunuza ekleyin

Göstermek proxy_passistediğiniz yerle değiştirin yoursite.dev. Benim durumumda localhost'un yerini alıyordu: 3000 veya eşdeğeri127.0.0.1:3000

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

4. Adım : Eklemek için /etc/hostsMac'te hosts dosyanızı düzenleyin

127.0.0.1   yoursite.dev

Bu dosya etki alanlarını localhost'a yönlendirir. Nginx, localhost'ta dinler ve bir kuralla eşleşirse yönlendirir.

Adım 5 : Geliştirme ortamınızı her kullanışınızda, Facebook'un doğru şekilde oturum açması yoursite.deviçin adres çubuğundaki simgesini kullanırsınız localhost:3000.


1

Forward, facebook uygulamalarının yerel olarak geliştirilmesine yardımcı olmak için harika bir araçtır, SSL'yi destekler, böylece sertifika meselesi sorun olmaz.

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

SORUMLULUK REDDİ: Ben geliştiricilerden biriyim


1
Ve PageKite , Forward'ın rakiplerinden biridir (başardım!). ;-)
Bjarni Rúnar

Güneşin altında her şeyi denedikten sonra, bu benim için çalıştı. Tek sorun, tüm bu iletmenin gerçekten yavaş olmasıdır. FB geri aramalarını almamaktan daha iyidir! Teşekkürler
Craig

0

Uygulamanızı localhost için https üzerinden çalıştıracak şekilde kurmanız gerekiyor

Ubuntu'da HTTPS'yi kurmak için burada verilen adımları takip edebilirsiniz.

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

Aşağıdaki adımları uygulamanız gerekir:

apache yükleyin (eğer sahip değilseniz)

sudo apt-get install apache2

Birinci Adım - SSL Modülünü etkinleştirin

sudo a2enmod ssl
sudo service apache2 restart

İkinci Adım - Yeni Bir Dizin Oluşturun

sudo mkdir /etc/apache2/ssl

Üçüncü Adım - Kendinden İmzalı bir SSL Sertifikası Oluşturun

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

Bu komutla hem kendinden imzalı SSL sertifikasını hem de onu koruyan sunucu anahtarını oluşturacağız ve her ikisini de yeni dizine yerleştireceğiz. En önemli satır "Ortak Ad" dır. Resmi alan adınızı buraya girin veya henüz sahip değilseniz sitenizin IP adresini girin.

Ortak Ad (örn. Sunucu FQDN'si veya SİZİN adınız) []: example.com veya localhost

Dördüncü Adım - Sertifikayı Oluşturun

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

Aşağıdaki satırları bulun ve ayarlarınıza göre düzenleyin

SunucuAdı localhost veya example.com

SSLCertificateFile /etc/apache2/ssl/apache.crt üzerinde SSLEngine

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Beşinci Adım - Yeni Sanal Ana Bilgisayarı Etkinleştirin

sudo a2ensite default-ssl
sudo service apache2 reload

0

Bir hile:

MAMPPRO kullanın ve oluşturun: sunucu adı: web sitenizin TAM adresi (örneğin: helloworld.com) diskinizdeki sitenize

Facebook'ta: Böylece orijinal Site URL'nizi de tutabilirsiniz (örneğin: helloworld.com)

Artık web sitenizi adres çubuğuna yazdığınızda yerel olduğunuzu anlıyorsunuz ! ..ve çevrimiçi olmak istediğinizde, MAMP PRO'daki sunucuyu devre dışı bırakın ..

:)


0

Yukarıdaki cevapların hiçbiri benim için işe yaramadı. FB API 2.5 üzerinde çalışıyorum. Benimki, çözüldüğünde başarıya götüren sorunların bir kombinasyonuydu

  1. Bu şekilde korunduğundan ve yönetildiğinden ve yayına girerken devre dışı bırakılabileceğinden emin olmak için bir test uygulaması oluşturun
  2. Hata mesajını doğru bir şekilde okuyun :) - "İstemci OAuth Girişi" İLE "Web OAuth Girişini" etkinleştirmem gerekiyordu
  3. Mevcut IP adresimin ne olduğunu öğrenmek için https://www.whatismyip.com/ adresini kullanın
  4. Etki alanımda bir A kaydı oluşturun, yani mevcut IP adresimi gösteren http://localhost.mydomain.com

Muhtemelen Dinamik IP'nin değişimi için ideal değildir ve muhtemelen IP'yi daha "statik" yapmak için DynDNS veya benzeri bir şey kullanılabilir ama benim için işe yaradı


0

Benim durumumda sorunun, localhost: 4200'den facebook api web sitesine CORS talebini engelleyen krom olduğu ortaya çıktı. Chrome'u şu ayarla çalıştırmak: "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe" --disable-web-security --user-data-dir = "c: / chrome, geliştirme sırasında bir cazibe gibi çalıştı. Localhost olmasa bile facebook uygulamasının ayarlarına eklendi.


yerel geliştirme için iyi çalışıyor, ancak üretimde facebook'tan veri paylaşmak için facebook'un iznine ihtiyacınız var (tarayıcının seçenek çağrısıyla elde edilir)
radio_head
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.