localhost에서 Facebook 애플리케이션 실행


92

내 로컬 호스트에서 Facebook 채팅에 연결할 계획입니다. Facebook에서 세션 키를 가져와야합니다. 사이트 URL을 그대로 제공 localhost:8080하거나 ip-address:8080작동하지 않습니다.

하나는 dev m / c에서 실행되고 다른 하나는 localhost에서 실행되는 2 개의 서로 다른 API 키를 사용하여 두 개의 앱을 설정하는 방법에 대해 읽었지만 제대로 이해하지 못했습니다.

누구든지 localhost에서 Facebook 앱을 실행하는 방법을 설명 할 수 있습니까?


@Kavya 데스크톱 페이스 북 채팅 애플리케이션을 만들려고합니까?
Searock

그래 ... 난 ... 내 M / C에서 페이스 북의 서버를 공격 할 여기에 같은 관련 게시물을보고 stackoverflow.com/questions/1877913/... ... 내가 그것을 얻을 DIN
열정

@Kavya 하나를 만들고 싶다면 사용할 프로그래밍 언어에 대해 언급하지 않았습니까?
Searock

2
그것에 대한 튜토리얼을 썼습니다 .
ifaour

5
@xoxoxo 커뮤니케이션에 적절한 구두점과 철자를 사용하십시오.
bart

답변:


77

얼마 전에 이것에 대한 튜토리얼을 썼습니다 .

가장 중요한 점은 "사이트 URL"입니다.

사이트 URL : http : // localhost / app_name /

폴더 구조는 다음과 같습니다.

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

편집 :
Kavya : FB 서버가 IP 또는 포트 없이도 내 로컬 호스트를 어떻게 인식합니까 ??

나는이 페이스 북과 아무 상관이 있다고 생각하지 않는다, 나는 생각 iframe이 된 이후 src매개 변수는 브라우저에 직접 넣어 것처럼 로컬 URL을 치료하는 것입니다 클라이언트 측에서로드됩니다.

예를 들어 온라인 서버에 콘텐츠 (예 :)가있는 파일이 있습니다 online.php.

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

그리고 localhost 루트 디렉토리에 다음 파일이 있습니다 test.php.

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

이제 방문 http://your_domain.com/online.php하면 localhost 파일의 내용을 볼 수 있습니다!

이것이 바로 실시간 구독 및 콜백 승인 취소 가 로컬 호스트 URL에서 작동 하지 않는 이유입니다 ! Facebook은 이러한 URL에 대해 핑 (http 요청을 전송)하지만 분명히 Facebook 서버는 해당 URL을 귀하의 URL로 변환하지 않기 때문입니다!


'사이트 URL'이 어디에 / 또는 어떤 탭이 있는지 전혀 알 수없는 것 같습니다.
user962206

8080 포트에서 작동합니까? 난 여전히 사이트 URL에 오류가 점점 오전 : http://localhost:8080/auth/index.html오류를 제공하는 웹 페이지입니다 http://localhost:8080/auth/index.html과 channelurl 라인은 다음과 같습니다channelUrl : '//localhost:8080/auth/channel.html',
네크로맨서

'폴더 구조'부분을 이해하지 못합니다. 페이지에 Facebook 댓글을로드하기 위해 Facebook으로 웹 사이트에 로그인하는 경우에도 캔버스 구조가 필요합니까?
AlxVallejo 2013 년

로컬 호스트에 공개 이름을 지정하고 표시 할 수있는 터널링 도구가 있으므로 Facebook이 다시 핑할 수 있습니다. 나는 PageKite 라는 이름을 만들었고 다른 것들도 있습니다.
Bjarni Rúnar

29

localhost를 사용하는 경우 :

Facebook-> Settings-> Basic에서 "App Domains"필드에 "localhost"를 입력 한 다음 "+ 플랫폼 추가"를 클릭하고 "웹 사이트"를 선택합니다.

"모바일 사이트 URL"과 "사이트 URL"이라는 두 개의 필드를 만들고 "사이트 URL"에 "localhost"를 다시 작성합니다.

나를 위해 작동합니다.


, 덕분에 나는 다른 솔루션을 시도했지만 결국이 일을 사람이었다
rahulmishra

Site Url 필드에 내가 가지고 있습니다 : localhost ,하지만 작동하지 않았습니다. 말씀하신대로 App Domain 필드에 localhost를 추가했습니다. 이것은 잘 작동합니다. 감사합니다
RegarBoy

23

또한 '호스트'파일을 편집하고 도메인의 로컬 변형을 만들 수도 있습니다.

실제 페이스 북 애플리케이션 주소가 "example.com"인 경우 "localhost"를 가리키는 "hosts"파일에 "localhost.example.com"(PC에서만 액세스 가능) 도메인을 만들고이 도메인에서 로컬 웹 사이트를 실행할 수 있습니다. 이런 식으로 Facebook을 속일 수 있습니다.


1
매력처럼 작동합니다, 감사합니다! 참고로 호스트는 Windows 7 C:/Windows/System32/drivers/etc/hosts또는 Ubuntu에 있습니다/etc/hosts
pztrick

훌륭한 방법론. 감사.
Jerad 2014-04-23

앱 도메인 및 캔버스 URL을 어떻게 설정합니까?
Craig

그러나 이렇게하면 포트를 지정할 수 없으므로 동일한 도메인에서 개발을 허용하려면 역방향 프록시를 사용해야합니다. 참조 stackoverflow.com/questions/10729034/...
MagicLAMP

7

앱의 기본 설정 ( https://developers.facebook.com/apps )에서 설정-> 기본-> 앱이 Facebook과 통합되는 방식 선택 ...

"사이트 URL :"및 "모바일 사이트 URL :"을 사용하여 프로덕션 및 개발 URL을 보관하십시오. 두 사이트 모두 인증이 허용됩니다. 인증을 위해 Facebook을 사용하고 있으므로 모바일 사이트 리디렉션 기능이 필요하지 않습니다. 인증을 테스트하는 동안 일반적으로 "Mobile Site URL :"을 "localhost : 12345"사이트로 변경 한 다음 완료되면 다시 정상으로 설정합니다.


6

2013 년 8 월. Facebook은 "localhost : 3000"과 같이 앱에 대한 포트로 도메인을 설정하는 것을 허용하지 않습니다.

따라서 https://pagekite.net 을 사용 localhost:port하여 적절한 도메인 으로 터널링 할 수 있습니다 .

Rails 개발자는 http://progrium.com/localtunnel/ 을 무료로 사용할 수 있습니다 .

  • Facebook은 한 번에 하나의 앱 도메인 만 허용합니다. localhost로 다른 것을 추가하려고 시도하면 도메인에 대해 일종의 다른 오류가 표시됩니다. 콜백 및 앱 도메인 설정에는 한 번에 하나의 도메인 만 사용해야합니다.

4

그래서 오늘 이걸 사용했습니다. 내 URL은 http://localhost:8888입니다. 내가 facebook에 준 도메인은 localhost입니다. FB.api방법을 사용하여 데이터를 가져 오려고했기 때문에 작동하지 않는다고 생각했습니다 . 나는 "정의되지 않은"이름과 소스가없는 이미지를 계속 얻었 기 때문에 확실히 Graph에 액세스 할 수 없었습니다.

나중에 나는 내 문제는 내가 단지의 첫 번째 인수를 전달했다 정말로 것을 깨달았다 /meFB.api, 나는 토큰이 없었다. 따라서 인수에 FB.getLoginStatus추가해야하는 토큰을 얻으려면 함수를 사용해야합니다 /me.


2

캔버스 URL을 http : // localhost / app_path 로 지정하십시오 .


@ifaour i follwoed ur tutorial .. its givin me error API 오류 코드 : 191 API 오류 설명 : 지정된 URL은 응용 프로그램에서 소유하지 않습니다. 오류 메시지 : redirect_uri는 응용 프로그램에서 소유하지 않습니다. fb 내부에서 실행하는 데 필요하지 않습니다.
열정적입니다

@Kavya는 캔버스 URL을 localhost / app_path 로 추가 하고 fb app을 열면 localhost에서 앱이 실행됩니다.
JustCoding 2011 년

이를 수행하는 또 다른 방법은 localhost를 지정하는 대신 사이트 / 캔버스 URL을 로컬로 매핑하는 것입니다. 그런 다음 대상 도메인을 사용할 수 있습니다. 어떤 아키텍처에서 개발 중인지 잘 모르겠지만 Windows에서는 IIS 사이트를 올바른 바인딩으로 로컬로 설정 한 다음 C : \ Windows \ System32 \ drivers \ etc의 호스트 파일에 별칭을 추가하여이를 달성 할 수 있습니다. 예를 들면 127.0.0.1 yourproject.yourdomain.net 라인을 추가
dumbledad

2

Ok 나는이 답변이 무엇인지 잘 모르겠지만 내 직장에서 수석 개발자의 조언에 따라 무엇이 나를 위해 일했는지 알려 드리겠습니다. 저는 Ruby on Rails에서 일하고 있으며 Facebook의 JavaScript 코드를 사용하여 액세스 토큰을 얻습니다.

문제 : 인증을 위해 Facebook은 주소 표시 줄에서 URL을 가져와 파일에있는 URL과 비교합니다. localhost:3000어떤 이유로 든 사용할 수 없습니다 . 그러나 같은 완전히 만들어 낸 도메인 이름을 사용할 수 있습니다 yoursite.dev로컬 서버를 실행하고 지정하여 yoursite.dev127.0.0.1:3000또는 어디서든 로컬 호스트를 가리키는했다.

1 단계 : Nginx 설치 또는 업데이트

$ brew install nginx(설치) 또는 $ brew upgrade nginx(업데이트)

2 단계 : nginx 구성 파일 열기

/usr/local/etc/nginx/nginx.conf (일반적으로 여기)

/opt/boxen/config/nginx/nginx.conf(Boxen을 사용하는 경우)

3 단계이 코드를 http {}블록에 추가합니다.

proxy_pass가리키고 싶은 곳으로 교체하십시오 yoursite.dev. 제 경우에는 localhost : 3000 또는 이와 동등한 것을 대체했습니다.127.0.0.1:3000

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

4 단계 : /etc/hostsMac에서 포함 할 호스트 파일 편집

127.0.0.1   yoursite.dev

이 파일은 도메인을 localhost로 지정합니다. Nginx는 localhost에서 수신 대기하고 규칙과 일치하면 리디렉션합니다.

5 단계 : 앞으로 개발 환경을 사용할 때마다 Facebook이 올바르게 로그인하도록하는 yoursite.dev대신 주소 표시 줄에서 를 사용 localhost:3000합니다.


1

Forward는 로컬에서 Facebook 앱 개발을 돕는 훌륭한 도구이며 SSL을 지원하므로 인증서 문제가 발생하지 않습니다.

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

면책 조항 : 저는 개발자 중 한 명입니다.


1
그리고 PageKite 는 Forward의 경쟁자 중 하나입니다 (내가 만들었습니다!). ;-)
비자 르니 Rúnar

태양 아래서 다른 모든 것을 시도한 후에 이것은 나를 위해 일했습니다. 유일한 문제는 모든 전달이 정말 느리다는 것입니다. 그래도 FB 콜백을받지 않는 것보다 낫습니다! 감사합니다
크레이그

0

로컬 호스트에 대해 https를 통해 실행되도록 앱을 설정해야합니다.

이 단계에 따라 우분투에서 HTTPS를 설정할 수 있습니다.

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

다음 단계를 수행해야합니다.

아파치 설치 (설치되어 있지 않은 경우)

sudo apt-get install apache2

1 단계 —SSL 모듈 활성화

sudo a2enmod ssl
sudo service apache2 restart

2 단계 — 새 디렉토리 생성

sudo mkdir /etc/apache2/ssl

3 단계 — 자체 서명 된 SSL 인증서 만들기

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

이 명령을 사용하여 자체 서명 된 SSL 인증서와이를 보호하는 서버 키를 만들고 둘 다 새 디렉터리에 배치합니다. 가장 중요한 라인은 "Common Name"입니다. 여기에 공식 도메인 이름을 입력하거나 아직 도메인이없는 경우 사이트의 IP 주소를 입력합니다.

일반 이름 (예 : 서버 FQDN 또는 사용자 이름) [] : example.com 또는 localhost

4 단계 — 인증서 설정

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

다음 줄을 찾아 설정으로 편집하십시오.

ServerName localhost 또는 example.com

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

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

5 단계 — 새 가상 호스트 활성화

sudo a2ensite default-ssl
sudo service apache2 reload

0

트릭:

MAMPPRO를 사용 하고 다음을 생성합니다. 서버 이름 : 웹 사이트의 정확한 주소 (예 : helloworld.com)를 디스크의 사이트에

Facebook : 따라서 원래 사이트 URL도 유지할 수 있습니다 (예 : helloworld.com).

이제 주소 표시 줄에 웹 사이트를 입력 할 때 로컬 에 있음을 이해합니다 ! .. 온라인 상태를 원할 때 MAMP PRO에서 서버를 비활성화하기 만하면됩니다.

:)


0

위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. FB API 2.5에서 실행 중입니다. 내 것은 일단 해결되면 성공으로 이어지는 문제의 조합이었습니다.

  1. 테스트 앱을 만들어 그대로 유지 및 관리하고 게시 할 때 비활성화 할 수 있는지 확인합니다.
  2. 오류 메시지를 제대로 읽습니다.- "클라이언트 OAuth 로그인"을 사용하여 "웹 OAuth 로그인"을 활성화해야했습니다.
  3. https://www.whatismyip.com/ 을 사용 하여 내 현재 IP가 무엇인지 알아보십시오.
  4. 내 도메인 즉 , 현재 IP를 가리키는 http://localhost.mydomain.com 에 A 레코드를 만듭니다.

동적 IP의 변경으로 이상적이지 않을 수 있으며 DynDNS 또는 유사한 것을 사용하여 IP를보다 "정적"으로 만들 수 있지만 저에게는 효과적이었습니다.


0

제 경우에는 문제가 localhost : 4200에서 facebook api 웹 사이트로의 CORS 요청을 차단하는 크롬으로 밝혀졌습니다. 이 설정으로 Chrome 실행 : "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe"--disable-web-security --user-data-dir = "c : / chrome은 개발하는 동안 매력처럼 작동했습니다. 로컬 호스트가 없어도 페이스 북 앱 설정에 추가되었습니다.


지역 발전을 위해 잘 작동하지만, 생산에 당신은 페이스 북에서 공유 데이터 (브라우저의 옵션 호출에 의해 얻을 수있다) 페이스 북의 허가 필요
radio_head
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.