ฉันใช้ Facebook เป็นการเข้าสู่ระบบภายนอกของข้อมูลประจำตัว ASP.Net Core ฉันต้องการแม้ว่าผู้ใช้จะเข้าสู่ระบบด้วย Facebook ผู้ใช้จะกรอกโปรไฟล์ของเขาบนเว็บไซต์ เพื่อที่ฉันจะใช้วิธี ExternalLoginCallback
ซึ่งฉันต้องการรับข้อมูลจาก Facebook เช่น วันเกิด สถานที่ (ประเทศ) ...
ปัญหาหนึ่งคือหากผู้ใช้ยกเลิกการเลือกสิทธิ์บางอย่าง การโทรเริ่มต้นไปยัง Facebook จะล้มเหลว:
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
return RedirectToAction(nameof(Login));
// Sign in the user with this external login provider if the user already has a login.
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false);
ฉันยังต้องทำการตรวจสอบเพิ่มเติมเกี่ยวกับข้อมูลผู้ใช้ ซึ่งจะต้องเรียก Graph API โดยตรง
จุดบล็อกของฉัน: - ในวิธี ExternalLoginCallback
ฉันจะต้องแยก 'ประเทศ' และ 'วันเกิด' เพื่อหลีกเลี่ยงไม่ให้ Facebook API ส่งกลับข้อผิดพลาดในกรณีที่ผู้ใช้ไม่ได้รับอนุญาต - เพื่อที่ฉันจะต้อง ผู้ใช้ access_token (และสำหรับการโทรเพิ่มเติมในวิธีการ) ฉันไม่เห็นวิธีรับมันแม้ว่าจะถูกใช้โดยกรอบงาน Facebook Identity - เมื่อสร้างโปรไฟล์แล้ว ฉันต้องการเข้าถึง access_token นี้ซึ่งควร ถูกจัดเก็บไว้ในตาราง UserTokens (เดานะ?) แต่ฉันหาไม่เจอ เพราะตารางว่างเปล่า (DbContext ของฉันเป็นคลาสที่ขยาย IdentityDbContext<AppUser, AppRole, long>
ไม่รู้ว่ามีผลกระทบหรือไม่)
ฉันพบคำตอบนี้แล้ว https://stackoverflow.com/a/42670559/4881677 ซึ่งอาจช่วยได้ แต่ไม่เพียงพอ
ความช่วยเหลือใด ๆ ? :)