OAuth: จะทดสอบกับ URL ในเครื่องได้อย่างไร


155

ฉันพยายามที่จะทดสอบOAuthปุ่ม แต่พวกเขาทั้งหมด (Facebook, Twitter, LinkedIn) กลับมามีข้อผิดพลาดที่ดูเหมือนจะส่งสัญญาณว่าฉันไม่สามารถทดสอบหรือใช้พวกเขาจากท้องถิ่น URL

คนทั่วไปจะทำงานกับการพัฒนากับสิ่ง OAuth อย่างไรหากพวกเขาดูเหมือนจะต้องการสภาพแวดล้อมการเชื่อมต่อที่ไม่ใช่แบบ devและไม่ใช่ท้องถิ่น


ฉันตอบกลับไปว่า: stackoverflow.com/a/10410838/604511
Jesvin Jose

คำตอบ:


133

อัปเดตตุลาคม 2559 : ง่ายที่สุดตอนนี้: ใช้lvh.meซึ่งชี้ไปที่127.0.0.1เสมอ

คำตอบก่อนหน้า :

เนื่องจากเบราว์เซอร์ร้องขอการเรียกกลับที่ออกให้โดยเป็นการตอบกลับการเปลี่ยนเส้นทาง HTTP คุณสามารถตั้งค่าไฟล์. โฮสต์หรือเทียบเท่ากับชี้โดเมนที่ไม่ใช่localhost127.0.0.1

พูดเช่นคุณลงทะเบียนโทรกลับต่อไปนี้ด้วย http://www.publicdomain.com/callback/Twitter: ตรวจสอบให้แน่ใจว่าwww.publicdomain.comชี้ไปที่ 127.0.0.1 ในไฟล์โฮสต์ของคุณและ Twitter นั้นสามารถทำการค้นหา DNS ที่ประสบความสำเร็จบน www.publicdomain.com เช่นโดเมนจำเป็นต้องมีอยู่และการโทรกลับที่เฉพาะเจาะจงอาจส่งคืนข้อความสถานะ 200 หากมีการร้องขอ

แก้ไข :

ฉันเพิ่งอ่านบทความต่อไปนี้: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine /ซึ่งได้รับการเชื่อมโยงจากคำถามนี้: ทวิตเตอร์ oAuth callbackUrl - พัฒนา

หากต้องการอ้างอิงบทความ:

คุณสามารถใช้ bit.ly ซึ่งเป็นบริการย่อ URL เพียงแค่ย่อ [localhost URL เช่น http // localhost: 8080 / twitter_callback] และลงทะเบียน URL ที่ย่อให้สั้นลงเป็น callback ในแอพ Twitter ของคุณ

ซึ่งควรง่ายกว่าเล่นซอในไฟล์. โฮสต์

โปรดทราบว่าตอนนี้ (14 สิงหาคม) bit.ly ไม่อนุญาตให้ส่งต่อลิงก์ไปยัง localhost อย่างไรก็ตามตัวย่อลิงก์ของ Google ใช้งานได้

แก้ไข PS: (พ.ย. 18): ตัวย่อลิงก์ของ Google หยุดให้การสนับสนุน localhost หรือ 127.0.0.1


3
ฉันคิดว่าเซิร์ฟเวอร์กำลังเรียก callbackurl และตอนนี้รู้ว่า oauth ใช้ไคลเอ็นต์เป็นผู้ส่งสารและไม่มีการเชื่อมโยงระหว่างเซิร์ฟเวอร์ซึ่งทำให้ง่ายขึ้นมาก
Kristian Benoit

10
เป็นที่น่าสังเกตว่า lvh.me เป็นเจ้าของโดยสุภาพบุรุษชื่อ Levi Cook (ดูgist.github.com/levicook/563675 ) และเป็นเจ้าของโดยส่วนตัว ดูเหมือนว่าเขาจะเป็นคนดี แต่ก็ไม่ใช่โดเมนที่ได้รับอนุญาตอย่างเป็นทางการจากผู้มีอำนาจทั่วโลกดังนั้นจึงอาจ "ตามหลักทฤษฎี" หยุดทำงานในบางช่วงเวลา
Mario Peshev

4
ในขณะที่เขียน Google ดูเหมือนจะไม่อนุญาตให้มีส่วนขยายโดเมนแฟนซี (เช่น.me) ใน URL การเปลี่ยนเส้นทาง เป็นผลให้ lvh.me ไม่ทำงาน ฉันพบความสำเร็จกับlacolhost.comแทน
PullJosh

3
เจ้าของ lvh.me สามารถเริ่มรวบรวมรหัสการอนุญาตทั้งหมดของคุณได้ ...
Taylor Buchanan

2
@JonNylander พวกเขาสามารถเปลี่ยนระเบียน DNS ของพวกเขาได้อย่างง่ายดายเพื่อชี้ไปยังไซต์อื่นซึ่งเก็บรหัสรับรองความถูกต้องและสถานะไว้อย่างชัดเจนและยังคงเปลี่ยนเส้นทางกลับไปที่ localhost นอกจากว่าคุณกำลังตรวจสอบ DNS เป็นประจำคุณจะไม่สังเกตจนกว่าพวกเขาจะสามารถเข้าถึงได้ สิ่งเดียวที่จะสังเกตเห็นได้ทันทีคือคนที่ใช้มันนอกบริบทเบราว์เซอร์
เทย์เลอร์บูคานัน

18

หรือคุณสามารถใช้https://tolocalhost.com/และกำหนดค่าวิธีที่จะเปลี่ยนเส้นทางการติดต่อกลับไปยังไซต์ท้องถิ่นของคุณ คุณสามารถระบุชื่อโฮสต์ (หากแตกต่างจาก localhost เช่น yourapp.local และหมายเลขพอร์ต) เพื่อการพัฒนาเท่านั้น


13

นอกจากนี้คุณยังสามารถใช้ ngrok: https://ngrok.com/ ฉันใช้มันตลอดเวลาเพื่อให้เซิร์ฟเวอร์สาธารณะทำงานบน localhost ของฉัน หวังว่านี่จะช่วยได้

ตัวเลือกอื่นที่ให้โดเมนแบบกำหนดเองของคุณเองฟรีคือ servo.net และhttps://localtunnel.github.io/www/


1
มันง่ายกว่าที่ฉันคิดไว้! เพิ่งสร้างบัญชีของฉันติดตั้งและใช้งาน./ngrok http 8080 -host-header="localhost:8080"และฉันก็ใช้งาน URL สาธารณะ
Miguel Reyes

3

Google ไม่อนุญาตให้ทดสอบรับรองความถูกต้องบน localhost โดยใช้http://webporject.devหรือ.locและ. etc และ google ลิงก์แบบย่อที่ทำให้ URL ในท้องถิ่นของคุณสั้นลงhttp://webporject.devเช่นกันbit.ly:) Google ยอมรับเฉพาะ URL ที่เริ่มต้นhttp://localhost/...

หากคุณต้องการทดสอบ Google auth api คุณควรทำตามขั้นตอนเหล่านี้ ...

ตั้งชื่อแทนใหม่

หากคุณใช้openserverแผงการตั้งค่าและคลิกaliases tabและคลิกที่เมนูแบบเลื่อนลงจากนั้นค้นหาlocalhostและเลือก

ตอนนี้คุณควรเลือกโฟลเดอร์รูทโปรเจ็กต์เว็บท้องถิ่นโดยคลิกที่ดรอปดาวน์ถัดไปที่อยู่ถัดจากดรอปดาวน์แรก

และคลิกที่ปุ่มที่เรียกว่าaddและรีสตาร์ท opensever

ตอนนี้โครงการในพื้นที่ของคุณพร้อมใช้งานบนลิงก์http://localhost/ นี้แล้วคุณยังสามารถวาง URL ในพื้นที่นี้ไปยังredirect urlฟิลด์Google auth api to ...


3

คุณสามารถแก้ไขไฟล์โฮสต์บน windows หรือ linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

การจำแนกชื่อ localhost ได้รับการจัดการภายใน DNS เอง

127.0.0.1 mywebsite.com

หลังจากเสร็จสิ้นการทดสอบคุณเพียงแค่แสดงความคิดเห็นบรรทัดที่คุณเพิ่มเพื่อปิดการใช้งาน

127.0.0.1 mywebsite.com


มันใช้งานได้สำหรับฉันขอบคุณ นอกจากนี้หากคุณใช้เช่น Node.js บนพอร์ต 3000 ให้ใช้mywebsite.com:3000
flow3r

3

สำหรับผู้ใช้ Mac ให้แก้ไข/etc/hostsไฟล์ คุณต้องใช้sudo vi /etc/hostsถ้ามันเป็นแบบอ่านอย่างเดียว หลังจากการอนุญาตเซิร์ฟเวอร์ oauth จะส่ง URL การเรียกกลับและเนื่องจาก URL การติดต่อกลับนั้นแสดงผลในเบราว์เซอร์ท้องถิ่นของคุณการตั้งค่า DNS ในตัวเครื่องจะทำงาน:

127.0.0.1       mylocal.com

0

ใช้ Google OAuth เป็นข้อมูลอ้างอิง

  • ในแท็บลูกค้า OAuthของคุณ

    1. เพิ่มของคุณตัวอย่างเช่น URI แอป(http://localhost:3000)การผู้มีอำนาจ JavaScript กำเนิด ยูริ
  • ในหน้าจอความยินยอม OAuthของคุณ

    1. เพิ่มmywebsite.comไปยังโดเมนที่ได้รับอนุญาต
  • แก้ไขไฟล์โฮสต์บน windows หรือ linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsเพื่อเพิ่ม127.0.0.1 mywebsite.com (หมายเหตุความคิดเห็นใด ๆ ถ้ามี 127.0.0.1 อื่น ๆ )

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