Tôi đã sửa đổi startup.Auth.cs để tôi có thể thêm phạm vi. Dưới đây là những gì tôi có:Làm cách nào để nhận email của người dùng khi sử dụng Xác thực tài khoản Microsoft trong dự án MVC?
MicrosoftAccountAuthenticationOptions mo = new MicrosoftAccountAuthenticationOptions()
{
ClientId = "My Client ID",
ClientSecret = "My Client Secret",
};
app.UseMicrosoftAccountAuthentication(mo);
Điều này cho phép tôi xác thực người dùng.
Tôi đã thử thêm các phạm vi wl.signin, wl.emails và wl.contacts_emails. Tuy nhiên, chúng khiến trang đăng nhập của Microsoft báo cáo lỗi sau: AADSTS70011: Giá trị được cung cấp cho tham số đầu vào 'phạm vi' không hợp lệ. Phạm vi wl.signin, wl.emails, wl.contacts_emails không hợp lệ. Kết hợp phạm vi của openid và email dường như hoạt động. Tuy nhiên, phạm vi openid là quá mức cần thiết cho những gì tôi đang cố gắng thực hiện. Đó là, tôi nghĩ rằng đó là quá nhiều để yêu cầu từ người sử dụng. Phạm vi email tất cả đều tự nó không hoạt động.
Điều này đặc biệt kỳ lạ vì mẫu mà Visual Studio thiết lập giả định rằng nhà cung cấp xác thực bên ngoài sẽ cung cấp địa chỉ email.
Làm cách nào để chỉ nhận được email của người dùng?
Đối với bối cảnh, tôi đang sử dụng các tài liệu sau: https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference#openid-permissions mà cho ấn tượng mà tôi muốn email và hồ sơ bao gồm trong phạm vi. Tuy nhiên, nó đi vào trạng thái rằng chúng được bao gồm theo mặc định.
Tôi đang cố triển khai xác thực bên ngoài trong dự án MVC của mình bằng tài liệu: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins.
Đây là ứng dụng web ASP.Net (.Net Framework). Tôi sẽ thử toàn bộ điều với một ứng dụng Web ASP.Net Core (.Net Core). giao diện hơi khác một chút, tức là nó sử dụng MicrosoftAccountOptions thay vì MicrosoftAccountAuthenticationOptions. – JSWilson