วิธีทดสอบการเชื่อมต่อ Facebook ในพื้นที่


194

ฉันใช้ ASP .NET และ Facebook Connect APIs แต่เมื่อฉันเรียกใช้แอพและกดปุ่มเชื่อมต่อมันจะกลับไปที่เว็บไซต์ไม่ใช่เพื่อทดสอบเซิร์ฟเวอร์ท้องถิ่นซึ่งเป็น ( http: // localhost: xxxx / test.aspx ) ดังนั้นฉันจะทดสอบ Facebook ในพื้นที่ได้อย่างไร (เช่นฉันจะเปลี่ยน URL โทรกลับ)


4
คำตอบอยู่ที่นี่: forum.developers.facebook.com/viewtopic.php?pid=116136 คุณต้องแก้ไขไฟล์ 'C: \ WINDOWS \ system32 \ drivers \ etc \ hosts' เพื่อให้โดเมนของคุณมาที่ localHost
Haytham

101
ระบบนี้ดูเหมือนจะใช้งานได้ค่อนข้างแย่ในส่วนของ Facebook ดูเหมือนจะไม่เกิดขึ้นกับพวกเขาที่ทุกคนต้องการทดสอบคุณสมบัติอื่น ๆ บนเซิร์ฟเวอร์สด โซลูชันทั้งสองที่ให้ไว้ที่นี่ - แก้ไขไฟล์โฮสต์ในท้องถิ่นเพื่อหลอกเซิร์ฟเวอร์ที่ใช้งานจริงและเปลี่ยนเส้นทางไปยัง localhost และเปลี่ยน URL การใช้งานจริงชั่วคราวบน Facebook เป็น Localhost ทั้งสองเป็นการออกแบบที่ไม่ดีอย่างน่าทึ่งในส่วนของ Facebook Facebook ต้องเพิ่มความสามารถในการทดสอบบางประเภทให้กับระบบของพวกเขา
Paul Legato

2
การทำงานที่ดีคือมี 3 แอพ -> สด, QA และ Dev ดังนั้นหากแอปหลักของคุณคือ apps.facebook.com/ohnice/ QA และ dev สามารถเป็น apps.facebook.com/ohnice_qa_sd/ เป็น apps.facebook.com/ohnice_dev_fg/ ใช่สิ่งที่สุ่มดังนั้นคุณจึงไม่มีผู้เข้าชมที่ไม่พึงประสงค์เมื่อบ้านของคุณ ไม่เป็นระเบียบ
tgkprog

1
@ PaulLegato เสร็จแล้ว (หลังจากหลายปี ... ) ดูโซลูชันของฉันหรือหนึ่งในโซลูชันที่ใช้คุณสมบัติทดสอบ
Erdal G.

คำตอบ:


236

มันง่ายพอที่คุณจะค้นพบ

เปิด/etc/hosts(Unix) C:\WINDOWS\system32\drivers\etc\hostsหรือ

หากโดเมนของคุณคือ foo.com ให้เพิ่มบรรทัดนี้:

127.0.0.1    local.foo.com

เมื่อคุณทำการทดสอบเปิดlocal.foo.comในเบราว์เซอร์ของคุณและมันจะทำงาน


4
หากต้องการแก้ไขไฟล์โฮสต์บน MAC จากนั้นเรียกใช้ "sudo pico / private / etc / hosts" ในเทอร์มินัลของคุณแก้ไขและกด "ctrl X" เพื่อบันทึก
Christoffer

@Christoffer: ฉันเชื่อว่า / private / etc เป็นเพียงลิงค์สัญลักษณ์ไปยัง / etc ดังนั้น / etc / hosts และ / private / etc / hosts เป็นไฟล์เดียวกัน
freeall

1
คุณพูดถูก ... แต่พวกเราบางคนต้องป้อนช้อนและพูดว่า "open / etc / hosts" ไม่เพียงพอ;) FB ยังคงล้มเหลวในพื้นที่ด้วยโซลูชันนี้สำหรับฉัน ฉันไม่ได้ใช้ Facebook JS
Christoffer

5
สิ่งนี้เคยทำงานให้ฉันจนกระทั่งเมื่อเร็ว ๆ นี้ แต่ตอนนี้ฉันได้รับconnection refusedข้อยกเว้นเมื่อพยายามเข้าสู่ระบบอาจเป็นเพราะการเปลี่ยนแปลงทาง Facebook ความคิดใด ๆ ของการทำงานรอบ ๆ มีความนิยมมาก
onurmatik

1
หากคุณทำเช่นนี้เพื่อเข้าถึงแอพพลิเคชั่น Rails ที่รันอยู่ในพื้นที่คุณอาจต้องเข้าไปที่ local.foo.com: 3000` ในเบราว์เซอร์ของคุณเนื่องจากแอพ Rails มักจะทำงานบนพอร์ตนั้น
David Tuite

102

แก้ไขแอปของคุณที่www.facebook.com/developers/และตั้งค่า "Site URL" เป็น "http: // localhost / myapppath"

เมื่อเสร็จแล้ว - เปลี่ยนกลับ


19
Facebook ไม่ได้ "เชื่อมต่อ" กลับไปที่เซิร์ฟเวอร์ของคุณ JS ของพวกเขาทำ และ JS ทำงานในบริบทของเบราว์เซอร์ของคุณ ซึ่งรู้ว่า "localhost" ชี้ไปที่ใด
อเล็กซ์

มันจะไม่ให้ฉันเพิ่ม " localsite " ฉันต้องทำให้แน่ใจว่าฉันมีจุดอยู่ในนั้น สิ่งนี้ใช้งานได้: " local.site "
Pete

ฟีเจอร์บางอย่างของ FB ไม่สามารถใช้งานได้ ตัวอย่างเช่น - บันทึกความสำเร็จไปยังเซิร์ฟเวอร์ FB มันต้องการ HTTPS ดังนั้นคำสั่ง localhost ของฉันจึงไม่ทำงาน :(
Kostadin

2
เป็นที่น่าสังเกตว่าการตรวจสอบความถูกต้องของแบบฟอร์มแอปนั้นต้องการให้คุณใช้ localhost ใน url เช่นhttp://localhost/myappแทนที่จะเป็นhttp://myapp
Graham

1
หากคุณใช้พอร์ตอื่นให้ใช้รูปแบบนี้: localhost: xxxx ) ตัวอย่างเช่น: localhost: 8080
m0z4rt

77

ฉันขอแนะนำให้สร้างแอปทดสอบ (สำหรับสภาพแวดล้อม dev เท่านั้น) บนhttps://developers.facebook.com/appsและตั้งค่า: Website with Facebook Loginคุณสมบัติไปยังlocalhostของคุณ: [พอร์ต]การตั้งค่า
ตัวเลือกนี้จะทำงานได้ดีโดยไม่จำเป็นต้องเปลี่ยนโฮสต์
อย่าลืมเปลี่ยนแอพกลับไปเป็นแอพโปรดักชั่นของคุณทันทีที่คุณใช้งานจริง

แก้ไข - ในเวอร์ชั่น fb ล่าสุดคุณจะพบมันภายใต้settingsแท็บ ป้อนคำอธิบายรูปภาพที่นี่


2
หรือเพียงแค่ใช้ไฟล์กำหนดค่าแยกต่างหากสำหรับ, dev, staging และ live
Chris Barry

1
ไม่พบ "เว็บไซต์ที่มีการเข้าสู่ระบบ Facebook" อีกต่อไป
Yehe

5
ดูเหมือนว่าคุณจะต้องคลิกที่ปุ่ม "+ เพิ่มแพลตฟอร์ม" แนวนอนสีเทาขนาดใหญ่ คุณมี "เว็บไซต์" แล้ว
ลูเซียโน

75

Facebook ได้เพิ่มคุณสมบัติรุ่นทดสอบ

ขั้นแรกให้เพิ่มเวอร์ชันทดสอบแอปพลิเคชันของคุณ: สร้างแอปทดสอบ

สร้างแอปทดสอบ

จากนั้นเปลี่ยนURL ของไซต์เป็น " http: // localhost " ภายใต้เว็บไซต์แล้วกดบันทึกการเปลี่ยนแปลง

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

นั่นคือทั้งหมด แต่ต้องระวัง: รหัสแอปและคีย์ลับของแอปนั้นแตกต่างกันสำหรับแอปพลิเคชันและรุ่นทดสอบ


App Domain คืออะไรในแผงการตั้งค่า ฉันกำลังพัฒนาแอปพลิเคชันไอออนิกด้วยการลงชื่อเข้าใช้ Facebook
Chirag thaker

1
@Chiragthaker เป็นโดเมนที่จะโฮสต์แอปโปรดักชั่น
Erdal G.

3
นี่เป็นคำตอบที่ดีกว่าในกรณีของฉันมากกว่าการแก้ไขhostsไฟล์เพราะมันไม่จำเป็นต้องใช้ HTTPS ในเซิร์ฟเวอร์ทดสอบของฉัน
Petr Dlouhý

39

คุณไม่ต้องทำอะไรยาก ๆ !

Facebook →การตั้งค่า→พื้นฐาน:
การเขียน" localhost "ใน" App โดเมน"ข้อมูลแล้วคลิกที่" + เพิ่มแพลตฟอร์ม "เลือก" เว็บไซต์ "

หลังจากนั้นใน" URL ของเว็บไซต์ "ฟิลด์เขียน URL localhost ของคุณ
(เช่นhttp://localhost:1337/something)

นี่จะช่วยให้คุณทดสอบปลั๊กอิน Facebook ของคุณในเครื่อง


1
มีวิธีแก้ปัญหาสำหรับไฟล์ในไฟล์พา ธ : /// android_assets / www หรือไม่ facebook จะไม่อนุญาตเส้นทางสำหรับ URL ไซต์นั้น
Vignesh Subramanian

ต้องเป็น https ทันที
Simon_Weaver

@Simon_Weaver คุณได้รับข้อมูลนี้จากที่ไหน มันบันทึกไว้ที่ไหนสักแห่งไหม?
kolistivra


@Simon_Weaver จากลิงก์ที่คุณส่งไป: "คุณจะยังสามารถใช้ HTTP ด้วยที่อยู่" localhost "แต่เฉพาะเมื่อแอปของคุณยังอยู่ในโหมดการพัฒนา"
kolistivra

5

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


3
ทางเลือกอุโมงค์อีกอย่างคือ ngrok.com
Mohamed Selim

3

ฉันไม่สามารถใช้โซลูชันอื่น ๆ ... สิ่งที่ได้ผลสำหรับฉันคือการติดตั้ง LocalTunnel.net (https://github.com/danielrmz/localtunnel-net-client) แล้วใช้ URL ที่เป็นผลลัพธ์ใน Facebook


1

ดูเหมือนว่า FB เพิ่งเปลี่ยนหน้า dev ของแอพอีกครั้งและเพิ่มคุณสมบัติที่เรียกว่า "Server IP Whitelist"

  1. ไปที่แอพของคุณและเลือกการตั้งค่า -> แท็บขั้นสูง
  2. รับ IP สาธารณะของคุณ (google จะแจ้งให้คุณทราบถ้าคุณ google "Whats My IP")
  3. เพิ่ม IP สาธารณะของคุณไปยังรายการที่อนุญาต IP ของเซิร์ฟเวอร์แล้วคลิกบันทึกการเปลี่ยนแปลงที่ด้านล่าง

เกิดอะไรขึ้นถ้านักพัฒนาหลายคนจากสถานที่ต่างกันทำงานบนเว็บไซต์ เราใช้ VM (Vagrant) ดังนั้น IP จึงเหมือนกันสำหรับทุก ๆ dev Sadly facebook ไม่อนุญาตให้ใช้ IP ของท้องถิ่นในรายการที่อนุญาต มันไม่ทำงาน
ProblemsOfSumit

หากฉันอ่านความคิดเห็นของคุณถูกต้องนี่จะไม่เป็นปัญหา คุณต้องใส่ไอพีสาธารณะของคุณซึ่งคุณบอกว่าเหมือนกันสำหรับนักพัฒนาแต่ละคน (คุณหมายถึงไม่เหมือนกัน) หากคุณมีนักพัฒนาหลายคนในไซต์ต่าง ๆ ที่มี IP แตกต่างกันคุณสามารถใช้ VPN เพื่อกำหนดเส้นทางการรับส่งข้อมูลทั้งหมดผ่าน 1 IP
sevensevens

ไม่ IP สาธารณะสำหรับเครื่องที่แตกต่างกันในสถานที่ที่แตกต่างกันแน่นอนว่าไม่เหมือนกันเฉพาะ IP ท้องถิ่นในแต่ละเครื่องจะเหมือนกัน (เช่น localhost) ฉันไม่ต้องการเส้นทางอะไร ตอนนี้ฉันใช้ localhost (เป็นเพียงตัวอย่าง) ในแอป FB - ซึ่งใช้งานได้ดี แต่ฉันต้องการทางออกเมื่อหน้าเว็บแสดงสด Facebook อนุญาตให้สร้าง "แอปทดสอบ" ภายในแอพซึ่งอาจเป็นวิธีแก้ปัญหา แต่ฉันยังไม่ได้ลอง แก้ไข: ดูเหมือนว่าเป็นวิธีการแก้ปัญหา
ปัญหาของ

1

ไปที่เพจ Canvas .. ดูในเบราว์เซอร์ .. คัดลอกข้อความแถบที่อยู่ ตอนนี้ไปที่แอพ Facebook ของคุณเพื่อไปแก้ไขการตั้งค่า

ในเว็บไซต์ในเว็บไซต์ url วางที่อยู่นั้น

ในการรวม Facebook ให้วางที่อยู่นั้นลงใน Canvas อีกครั้ง

และรหัสเดียวกันทุกที่ที่คุณต้องการ URL ของ URL หรือ URL การเปลี่ยนเส้นทาง

หวังว่ามันจะช่วย ..


-6

สร้าง 2 แอพและ

ใน /initializers/env_variables.rb

if Rails.env == 'development'
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
else
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
end
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.