Saya menggunakan Facebook sebagai login eksternal identitas ASP.Net Core. Saya ingin, meskipun pengguna masuk dengan Facebook, pengguna tersebut mengisi profilnya di situs web. Untuk itu saya menggunakan metode ExternalLoginCallback
, dimana saya ingin mendapatkan data dari Facebook seperti tanggal lahir, lokasi (negara), ...
Salah satu masalahnya adalah jika pengguna menghapus centang beberapa izin, panggilan default ke Facebook gagal:
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);
Saya juga perlu melakukan beberapa pemeriksaan tambahan pada data pengguna, yang memerlukan pemanggilan langsung Graph API.
Poin pemblokiran saya: - Dalam metode ExternalLoginCallback
, saya perlu memisahkan 'negara' dan 'tanggal lahir' untuk menghindari API Facebook untuk mengembalikan kesalahan jika pengguna tidak memberikan izin - Untuk itu saya memerlukan pengguna access_token (dan untuk panggilan tambahan dalam metode ini), saya tidak melihat cara mendapatkannya meskipun itu digunakan oleh kerangka Identitas Facebook - Setelah profil dibuat, saya ingin mendapatkan akses ke access_token ini, yang seharusnya disimpan di tabel UserTokens (saya kira?), tetapi saya tidak dapat menemukannya di sana, tabel tersebut kosong. (DbContext saya adalah kelas yang memperluas IdentityDbContext<AppUser, AppRole, long>
, tidak tahu apakah itu berdampak)
Saya telah menemukan jawaban ini https://stackoverflow.com/a/42670559/4881677 yang mungkin membantu, tetapi tidak cukup.
Ada bantuan? :)