วิธีรับ access_token โดยใช้ localhost เป็น URI เปลี่ยนเส้นทางพร้อมการให้สิทธิ์โดยนัย OAuth ใน c #

ภายใต้ประเภทการให้สิทธิ์โดยนัย - โทเค็นการเข้าถึงจะถูกส่งเป็นส่วนย่อย ไม่ใช่เป็นพารามิเตอร์ ตัวอย่างเช่น: http://localhost/#state=123456789&token_type=Bearer&access_token=xxxxxxxxxxxxxxxxxxxxx&scope=write+read&expires_in=2592000.

ฉันจะเข้าถึงได้จาก c# ได้อย่างไร

    HttpListener listener = new HttpListener();
    listener.Prefixes.Add("http://localhost/");
    listener.Start();
    System.Diagnostics.Process.Start("https://sketchfab.com/oauth2/authorize/?state=123456789&response_type=token&client_id=yyyyyyyyyyyyyyyyyyyyyyyyyyy");
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;

    // request.QueryString doesn't contain access_token

    listener.Stop();

แก้ไข: เท่าที่ฉันเข้าใจจาก ฉันจะได้รับแฮชของ URL ได้อย่างไร - ฉันไม่สามารถเข้าถึงข้อมูลนี้จากเซิร์ฟเวอร์ได้

คำตอบสุดท้ายที่นี่ เป็นไปได้ไหม ใช้ OAuth 2.0 โดยไม่มีเซิร์ฟเวอร์เปลี่ยนเส้นทางใช่หรือไม่ ไม่ได้กล่าวถึงประเภทการให้สิทธิ์โดยนัย


person Andrey    schedule 20.12.2019    source แหล่งที่มา
comment
คุณสามารถรับผลลัพธ์โดยใช้บุรุษไปรษณีย์ได้หรือไม่? หากเป็นเช่นนั้น ให้ใช้ดมกลิ่น เช่น wireshark หรือ fiddler และจับคำขอแรกในบุรุษไปรษณีย์ และเปรียบเทียบกับแอปพลิเคชัน c# จากนั้นทำให้ c# ดูเหมือนบุรุษไปรษณีย์   -  person jdweng    schedule 20.12.2019
comment
ฉันไม่เคยจัดการกับบุรุษไปรษณีย์ ฉันเห็น access_token ในสตริง URL ในเบราว์เซอร์ แต่ฉันไม่สามารถเข้าถึงได้จาก c# ฉันคิดว่ามันควรจะเรียบง่ายไม่มากก็น้อย   -  person Andrey    schedule 20.12.2019
comment
คุณสามารถดูผลลัพธ์ของเบราว์เซอร์แทนบุรุษไปรษณีย์ได้ ทั้งสองจะให้คำแนะนำว่าทำไมคุณจึงไม่สามารถเข้า c# ได้   -  person jdweng    schedule 20.12.2019
comment
ฉันสร้างเพจธรรมดาเป็นการตอบกลับ ใน Chrome ฉันเห็นโทเค็นที่นั่นในคุณสมบัติ BaseURI เท่าที่ฉันเข้าใจปัญหาก็คือแฟรกเมนต์ไม่ไปที่เซิร์ฟเวอร์ ฉันควรเพิ่มโค้ดลงในหน้าตอบกลับเพื่อแยกออกหรือไม่   -  person Andrey    schedule 20.12.2019
comment
ชิ้นส่วนอาจหมายถึงสิ่งต่างๆ มากมาย รวมถึงไม่ได้ไปที่เซิร์ฟเวอร์ด้วย การเปลี่ยนเส้นทางหมายถึง URL ไม่ถูกต้อง นอกจากนี้คุณอาจประสบปัญหาหากข้อมูลประจำตัวไม่เหมือนกัน จริงๆ แล้ว URL เป็นเพียงไฟล์ html (หรือเทียบเท่า) บนเครื่อง และคุณอาจไม่มีข้อมูลรับรองในการเข้าถึงไฟล์   -  person jdweng    schedule 20.12.2019
comment
ฉันได้แก้ไขคำถามเล็กน้อยเพื่อให้ชัดเจนยิ่งขึ้น การเปลี่ยนเส้นทางไม่ได้หมายความว่า URL ไม่ถูกต้อง แต่เป็นส่วนหนึ่งของ OAuth ปกติ Fragment หมายถึงส่วนหนึ่งของ URL ที่ตามหลังสัญลักษณ์ #   -  person Andrey    schedule 20.12.2019
comment
เหตุใดคุณจึงต้องมีแฮชสำหรับ URL หากคุณเห็นรหัสอนุญาตในการตอบกลับ คุณเพียงแค่ต้องลบรหัสอนุญาตออกจากการตอบกลับ   -  person jdweng    schedule 21.12.2019
comment
เท่าที่ฉันเข้าใจ - ฉันเห็นการตอบสนองในตัวแปรคำขอ แต่ไม่มีโทเค็น (โทเค็นไม่ใช่รหัสอนุญาต - เป็นประเภทการให้สิทธิ์อื่น) OAuth ส่งโทเค็นไปที่ใดที่หนึ่ง และฉันเพิ่งเห็นหน้าธรรมดาของฉันในเว็บเบราว์เซอร์พร้อม URL   -  person Andrey    schedule 21.12.2019
comment
ฉันสงสัยว่ามีบางอย่างผิดปกติกับคุกกี้ คุณเห็นคุกกี้ในคำขอหรือไม่ คุณกำลังใช้ HTTPS (ปลอดภัย) ดังนั้นจึงควรมีการแลกเปลี่ยน SSL/TLS (ข้อความ TCP) ดังนั้นคุกกี้อาจไม่ดีและเซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อ (การแลกเปลี่ยน SSL/TLS ก่อนหน้าล้มเหลวโดยใช้คุกกี้) หรือการแลกเปลี่ยน SSL/TLS ล้มเหลว คุณมีใบรับรองหรือไม่? อาจมีปัญหากับใบรับรอง   -  person jdweng    schedule 21.12.2019