การพัฒนา Facebook ใน localhost


177

แค่อยากรู้ว่ามีวิธีใดบ้างที่ฉันสามารถพัฒนาแอปพลิเคชั่น Facebook ใน localhost

คำตอบ:


246

แก้ไข: 2-15-2012 นี่คือวิธีการใช้การรับรองความถูกต้อง FB สำหรับเว็บไซต์ localhost

ฉันพบว่ามันสามารถปรับขนาดได้และสะดวกกว่าในการตั้งค่าแอพ Facebook ครั้งที่สอง ถ้าฉันสร้าง MyApp ฉันจะสร้างอีกอันที่สองเรียกว่า MyApp-dev

  • สร้างแอปใหม่ที่https://developers.facebook.com/apps
  • (ใหม่ 2/15/2012)คลิกที่Websiteช่องทำเครื่องหมายใต้ 'เลือกวิธีที่แอปพลิเคชันของคุณทำงานร่วมกับ Facebook' (ในเวอร์ชั่น Facebook ล่าสุดคุณสามารถค้นหาได้ในการตั้งค่า> พื้นฐาน> เพิ่มแพลตฟอร์ม - จากนั้นเลือกเว็บไซต์)
  • ตั้งค่าฟิลด์Site URL ( ไม่ใช่ฟิลด์App Domains ) เป็นhttp: //www.localhost: 3000 (ที่อยู่นี้ใช้สำหรับ Ruby on Rails เปลี่ยนได้ตามต้องการ)

ป้อนคำอธิบายรูปภาพที่นี่

  • ใน initializer แอปพลิเคชันของคุณใส่รหัสเพื่อตรวจสอบสภาพแวดล้อม
    • ตัวอย่างโค้ด Rails 3
      if Rails.env == 'การพัฒนา' || Rails.env == 'ทดสอบ'
        Rails.application.config.middleware.use OmniAuth :: Builder ทำได้
          ผู้ให้บริการ: facebook, 'DEV_APP_ID', 'DEV_APP_SECRET'
        ปลาย
      อื่น
        # การผลิต
        Rails.application.config.middleware.use OmniAuth :: Builder ทำได้
          ผู้ให้บริการ: facebook, 'PRODUCTION_APP_ID', 'PRODUCTION_APP_SECRET'
        ปลาย
      ปลาย
      

ฉันชอบวิธีนี้เพราะเมื่อตั้งค่าแล้วผู้ร่วมงานและเครื่องอื่น ๆ จะไม่มีการตั้งค่าเพิ่มเติม


3
+1 สิ่งนี้แปลก! มีคนพูดว่าคุณไม่สามารถเพิ่ม localhost เป็นแอปของคุณ แต่มันก็ใช้งานได้สำหรับฉัน ขอบคุณ!
Keyne Viana

15
นี่เป็นกรณีของคุณหรือไม่? ฉันดูเหมือนจะไม่สามารถเพิ่ม localhost หรือ 127.0.0.1,5000 หรืออะไรที่คล้ายกับโดเมนแอพของฉันสำหรับ Facebook
Pete

ฉันเพิ่งลองสร้างใหม่และพบปัญหา 'โดเมนไม่ถูกต้อง' ขอบคุณสำหรับการจับ
Eric Hu

1
@zoltarSpeaks ดูคำตอบที่อัปเดตของฉัน คุณต้องใช้ฟิลด์อื่นไม่ใช่ "โดเมนแอป"
Eric Hu

1
สิ่งนี้จะแทนที่ initializers / devise.rb ของ config.omniauth: facebook, 'APP_KEY', 'APP_SECRET',: scope => "อีเมล, offline_access .. " หรือไม่
หายไป

26

แน่นอนคุณทำได้เพียงเพิ่ม url localhost (ไม่มี "http") ใน app_domain ของคุณแล้วเพิ่มใน site_url ของคุณhttp://localhost(ด้วย http)

ปรับปรุง

Facebook เปลี่ยนสิ่งเล็ก ๆ น้อย ๆ ในตอนนี้เพียงไปที่การตั้งค่าแอพและในเว็บไซต์ URL เพียงแค่เพิ่มhttp: //localhostและปล่อยให้โดเมนแอปว่างเปล่า


ทั้งหมดนี้ใช้งานได้ ไม่จำเป็นต้องมีสิ่งใดในด้านของรั้ว
godspeedelbow

10
สิ่งนี้ไม่ทำงานอีกต่อไปคุณจะได้รับข้อผิดพลาดไม่สามารถเพิ่มโดเมนระดับบนสุด
Josh Bedo

20

นี่คือการกำหนดค่าของฉันและใช้งานได้ดีสำหรับ PHP API:

โดเมนแอป

   http://localhost

URL ไซต์

   http://localhost:8082/

1
ต้องกรอกข้อความทั้งสองเพื่อให้ localhost ทำงาน
paulruescher

19

หมายเหตุ: ตั้งแต่ปี 2012 Facebook อนุญาตให้ลงทะเบียน "localhost" เป็น Url ที่ส่งคืน คุณยังอาจต้องใช้วิธีแก้ปัญหาที่คล้ายกันสำหรับผู้ให้บริการรายอื่น (เช่น Microsoft one)

หากคุณต้องการชื่อโดเมนจริงที่ลงทะเบียนกับ Facebook (เช่น my.really.own.domain.com) คุณสามารถเปลี่ยนเส้นทางคำขอไปยังโดเมนนี้ในเครื่องของคุณ วิธีออกจากกล่องที่ง่ายที่สุดในระบบปฏิบัติการใด ๆ คือการเปลี่ยนไฟล์ "โฮสต์" เพื่อแมปโดเมนเป็น 127.0.0.1 (ดูhttp://technet.microsoft.com/en-us/library/bb727005.aspx#EDAAและhttps: / /serverfault.com/questions/118290/cname-record-alias-in-windows-hosts-file )

ผมมักจะใช้ไวโอลินที่จะทำเพื่อฉัน (บน Windows กับ IIS ท้องถิ่น) - ดูตัวอย่างในhttp://www.fiddler2.com/Fiddler/Dev/ScriptSamples.asp

if (oSession.HostnameIs("my.really.own.domain.com")) {
   oSession.host="localhost:80";
}

วิธีโฮสต์ไฟล์ของวิธีการไม่ทำงานกับ Visual Studio Development Server เนื่องจากต้องการ Urls ขาเข้าเป็น localhost / 127.0.0.1 หากคุณต้องการทำงานกับมัน (หรืออาจเป็นกับ IIS express) เพื่อแทนที่โฮสต์ - ใช้ Fiddler กับ IIS7 Express


9

Facebook ไม่อนุญาตให้ใช้ URL การเรียกกลับ 'localhost' สำหรับแอปพลิเคชัน Facebook ของ FBML อีกต่อไป


ตรวจสอบให้แน่ใจว่าในการตั้งค่าความปลอดภัย Facebook ของคุณคุณได้ปิด 'Secure Browsing' สิ่งนี้จะทำให้ localhost ของคุณไม่พร้อมใช้งานหากเปิดใช้งาน
supajb

9

ด้วยศูนย์พัฒนาใหม่ตอนนี้มันง่ายขึ้น:

1) เว้นโดเมนแอปไว้ว่าง ๆ
2) คลิกเพิ่มแพลตฟอร์ม
3) URL ของไซต์ควรเท่ากับเส้นทางแบบเต็มของโฮสต์ในพื้นที่ของคุณ
4) บันทึกการเปลี่ยนแปลง


1
ตรวจสอบแล้วนี่เป็นวิธีที่ดีที่สุดสำหรับการติดตั้ง localhost เพียงแค่ใส่ URL ฐานในสภาพแวดล้อมการพัฒนาของคุณดังกล่าวข้างต้นโดยไม่ต้องใส่ http: // และ facebook จะผนวกให้คุณ เรื่องง่าย ๆ ! ขอบคุณ Jay
keade

1
วิธีแก้ปัญหานั้นแก้ไขปัญหาของฉันเมื่อทำงานบน localhost
Rola

8

ฉันเพิ่งค้นพบวิธีแก้ปัญหา: คุณสามารถทำให้เครื่องของคุณสามารถเข้าถึงได้โดยใช้http://localtunnel.com คุณจะต้อง (ชั่วคราว) เปลี่ยน URL บางส่วนที่ใช้ในรหัสแอป / html ของคุณเพื่อให้ลิงก์ชี้ไปที่โดเมนชั่วคราว แต่อย่างน้อย facebook สามารถเข้าถึงเครื่องของคุณได้


7

ในการตั้งค่าพื้นฐานของแอพ ( https://developers.facebook.com/apps ) ภายใต้การตั้งค่า -> พื้นฐาน -> เลือกวิธีที่แอพของคุณทำงานร่วมกับ Facebook ...

ใช้ "ไซต์ URL:" และ "URL ไซต์มือถือ:" เพื่อระงับ URL การผลิตและการพัฒนาของคุณตามลำดับ ทั้งสองไซต์จะได้รับอนุญาตให้ตรวจสอบสิทธิ์ ฉันแค่ใช้ Facebook เพื่อการรับรองความถูกต้องดังนั้นฉันไม่ต้องการคุณสมบัติการเปลี่ยนเส้นทางไซต์มือถือใด ๆ ฉันมักจะเปลี่ยน "URL ของไซต์มือถือ:" เป็น "localhost: 12345" ไซต์ของฉันในขณะที่ฉันกำลังตรวจสอบความถูกต้องแล้วตั้งค่ากลับเป็นปกติเมื่อฉันทำเสร็จแล้ว


5

มี! โซลูชันของฉันทำงานเมื่อคุณสร้างแอป แต่คุณต้องการใช้การรับรองความถูกต้องของ Facebook ในเว็บไซต์ของคุณ โซลูชันด้านล่างนี้ไม่จำเป็นเมื่อคุณต้องการสร้างแอพที่รวมเข้ากับหน้า FB

สิ่งนี้คือคุณไม่สามารถใส่ "localhost" เป็นโดเมนในหน้าการตั้งค่า Facebook ของแอพของคุณ เหตุผลด้านความปลอดภัย?

คุณต้องไปที่ไฟล์โฮสต์ของคุณใน OSX / Linux etc / hosts และเพิ่มบรรทัดต่อไปนี้: 127.0.0.1 dev.yourdomain.com

โดเมนที่คุณใส่สิ่งที่คุณต้องการ หนึ่งความผิดพลาดคือการเพิ่มบรรทัดนี้: localhost dev.yourdomain.com (อย่างน้อยในเสือดาวหิมะ osx ในการทำงานไม่ได้)

จากนั้นคุณต้องล้างแคช dns ของคุณ บน OSX: พิมพ์dscacheutil -flushcacheในเทอร์มินัล สุดท้ายกลับไปที่เว็บไซต์ผู้พัฒนา Facebook ออนไลน์และในหน้าการกำหนดค่าของแอพคุณสามารถเพิ่มโดเมน "dev.yourdomain.com"

หากคุณใช้โปรแกรมเช่น Mamp, Easyphp หรืออะไรก็ตามตรวจสอบให้แน่ใจว่าพอร์ตสำหรับ Apache คือ 80

โซลูชันนี้ควรใช้งานได้กับ Windows เพราะมีไฟล์โฮสต์อยู่ด้วย อย่างไรก็ตามเท่าที่ฉันจำได้ว่า Windows 7 ไม่ได้ใช้ไฟล์นี้อีกต่อไป แต่เคล็ดลับนี้ควรใช้ถ้าคุณหาวิธีบังคับให้ windows ใช้ไฟล์โฮสต์


ใช้งานได้กับ win8.1 c: \ windows \ system32 \ drivers \ etc \ hosts คุณอาจต้องล้าง 'แคชตัวแก้ไขโฮสต์' ใน chrome URL = chrome: // net-internals / # dns
rnrneverdies

5

คุณต้องเลือกผลิตภัณฑ์ Facebook 'เข้าสู่ระบบ Facebook' และเปิดใช้งานการเข้าสู่ระบบลูกค้า OAuth, 'การเข้าสู่ระบบเว็บ OAuth' และ 'การเข้าสู่ระบบเบราว์เซอร์ OAuth ฝังตัว' แล้วแม้ว่าคุณจะให้ localhost url มันจะทำงาน ป้อนคำอธิบายรูปภาพที่นี่


สิ่งนี้ช่วยย้ายปัญหาไปตาม ข้อความจาก FB ณ วันที่ 23/02/2018: ในเดือนมีนาคมเรากำลังทำการปรับปรุงความปลอดภัยให้กับการตั้งค่าแอพของคุณที่จะทำให้การโทรจาก URIs ไม่ถูกต้องในรายการในฟิลด์ ORuth การเปลี่ยนเส้นทาง UA ที่ถูกต้องด้านล่างการอัปเดตนี้มา เราเห็นบนแพลตฟอร์มของเราและเราต้องการปกป้องแอพหรือเว็บไซต์ของคุณโดยกำหนดให้มีโหมดเข้มงวดใหม่สำหรับการเปลี่ยนเส้นทาง URIs
Tim Tyler

1
Fb ต้องใช้ https สำหรับการติดต่อกลับ Localhost ไม่รองรับ https
huuthang

1
@ huuthang ดังนั้นทั้งหมด Q / A นี้เลิกใช้แล้ว
RGB

4

ใช้งานได้ในเดือนมิถุนายน 2561 แม้จะเป็นไปตามข้อกำหนดของ HTTPS ดูเหมือนว่าแอปทดสอบไม่จำเป็นต้องมี https:

สร้างแอปทดสอบ: https://developers.facebook.com/docs/apps/test-apps/

จากนั้นในแอปทดสอบให้ทำตามขั้นตอนง่าย ๆ ในวิดีโอนี้: https://www.youtube.com/watch?v=7DuRvf7Jtkg


3

ฉันคิดว่าคุณควรจะสามารถในการพัฒนาโปรแกรมโดยใช้เว็บเซิร์ฟเวอร์การพัฒนาของสตูดิโอภาพ: เริ่มโปรแกรม Facebook ใหม่เมื่อ: http://www.facebook.com/developers/ จากนั้นตั้งค่าการตั้งค่าสำหรับ URL เว็บไซต์และ URL ผืนผ้าใบเป็นอินสแตนซ์ที่ใช้งานอยู่ในเว็บไซต์ของคุณตัวอย่างเช่น: http: // localhost: 1062 /

ต่อไปนี้เป็นลิงค์เชื่อมโยงบางส่วนที่จะช่วยคุณในการเริ่มต้นใช้งาน Facebook:

  1. http://thinkdiff.net/facebook/graph-api-iframe-base-facebook-application-development/ ,
  2. http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk.html ,
  3. http://apps.facebook.com/thinkdiffdemo/

หวังว่านี่จะช่วยได้


3

ลองนี้ ---

https://www.facebook.com/help/community/question/?id=589302607826562

1 - คลิกแอพจากนั้นเลือกแอพของคุณ

2 - คลิกปุ่มการตั้งค่าทางด้านซ้ายของหน้าจอ

3 - ในการตั้งค่าพื้นฐานคลิกปุ่มเพิ่มแพลตฟอร์มด้านล่างการตั้งค่า

4 - เลือกเว็บไซต์ในกล่องโต้ตอบแพลตฟอร์ม

5 - ป้อน URL ของคุณ (localhost ทำงานที่นี่)

6 - ในการป้อนข้อความของ App Domains ให้เพิ่มโดเมนของคุณที่ตรงกับที่อยู่ใน URL

7 - บันทึกการตั้งค่าของคุณ


2

สมมติว่าคุณลงทะเบียนแอปของคุณเป็น:

app.domain.com

คุณเพียงแค่ต้องแก้ไขไฟล์ / etc / hosts โดยการเพิ่ม

127.0.0.1 dev01.app.domain.com

จากนั้นแก้ไขการกำหนดค่า Apache ของคุณ

ServerName dev01.app.domain.com

และรีสตาร์ท apache

คุณจะต้องใส่ URL ของคุณในตัวแปรเพื่อใช้เป็นพารามิเตอร์ XML ในการโทรบางครั้ง:

<fb:login-button registration-url="http://<?=$URL?>/register" />

2

อย่าได้ cred พอที่จะแสดงความคิดเห็นในด้านบนลงมติคำตอบ แต่อย่างน้อยในสภาพแวดล้อมทางรถไฟของฉัน (วิ่ง 4) ราง s ที่ ไม่http://localhost:3000 http://www.localhost:3000เมื่อฉันเปลี่ยนเป็นhttp://localhost:3000มันใช้งานได้ดี ไม่จำเป็นต้องแก้ไขไฟล์โฮสต์ใด ๆ



0

โซลูชันของฉันทำงานได้ดีใน localhost ..... สำหรับการใช้ URL ของไซต์http://localhost/ และสำหรับโดเมนของแอปใช้localhost/folder_name ทุกอย่างก็เหมือนกัน ....... มันใช้งานได้ดี


0

ไปที่แผงควบคุมแอพได้ง่าย ๆ ภายใต้แท็บ Facebook ล็อกอินคลิกการตั้งค่าจากนั้นเลือกบังคับใช้ HTTPs ไม่บันทึกการตั้งค่าป้อนคำอธิบายรูปภาพที่นี่


0

แอปพลิเคชันจะทำงานได้ดีใน localhost: 3000 คุณเพียงแค่ต้องระบุที่อยู่ https ที่แอปพลิเคชันจะทำงานเมื่ออยู่ในโหมดการใช้งานจริง
ตัวเลือกที่ 2 ให้ URL หรือเว็บไซต์ heroku ของคุณซึ่งช่วยให้คุณมีตัวอย่างแอปพลิเคชันในโหมดการผลิต

ป้อนคำอธิบายรูปภาพที่นี่


0

อัปเดตล่าสุด: คุณไม่จำเป็นต้องระบุ URL ใด ๆ หากคุณกำลังทำการทดสอบอยู่ คุณสามารถเว้นช่องว่างไว้ได้ ตรวจสอบให้แน่ใจว่าแอปของคุณอยู่ในโหมดการพัฒนา ถ้าไม่ปิดสถานะจากการถ่ายทอดสด

ไม่จำเป็นต้องระบุ URL ไซต์โดเมนแอพหรือการเปลี่ยนเส้นทางที่ถูกต้อง oauth uri

ป้อนคำอธิบายรูปภาพที่นี่


1
โปรดทราบว่าหากคุณเปลี่ยนแอพของคุณจาก "สด" เป็น "การพัฒนา" คุณจะสามารถลงชื่อเข้าใช้จาก localhost บนเครื่องพัฒนา แต่ผู้ใช้สดทุกคนของคุณจะไม่สามารถเข้าสู่ระบบได้อีกต่อไป
webdevbyjoss

ฉันทำสิ่งนี้และมันก็ยังทำให้ฉันมีข้อผิดพลาดและปุ่ม fb จะไม่ปรากฏขึ้น
joslinm

หลังจากสร้างแอปคลิกปุ่ม "สร้างแอปทดสอบ" เพื่อรับแอพสำหรับการพัฒนา / ทดสอบ ฉันยังต้องการเพิ่ม "localhost" ในโดเมนแอป
ไม่มี

@ J.Money ฉันคิดว่ามันอาจจะเปลี่ยนไปในตอนนี้ ขอบคุณสำหรับการให้ฉันรู้ว่า.
Vigneshwaran Sivalingam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.