OAuthOptions.Scope 无法分配给
OAuthOptions.Scope Cannot Be Assigned To
我正在尝试在我的 ASP.NET Core 2.0 应用程序中实施 LinkedIn/OAuth 身份验证,我需要将范围设置为 { "r_basicprofile", "r_emailaddress" }
以便我可以访问用户的电子邮件、个人资料图片、等等
当我尝试在以下代码中设置范围时,出现以下错误:
Property or indexer 'OAuthOptions.Scope' cannot be assigned to -- it's
read-only.
代码如下:
services.AddOAuth(CookieAuthenticationDefaults.AuthenticationScheme, options => {
options.SignInScheme = "LinkedIn";
options.ClientId = "1234567890";
options.ClientSecret = "1234567890";
options.CallbackPath = "/linkedin-callback";
// Configure the LinkedIn endpoints
options.AuthorizationEndpoint = "https://www.linkedin.com/oauth/v2/authorization",
options.TokenEndpoint = "https://www.linkedin.com/oauth/v2/accessToken",
options.UserInformationEndpoint = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url,picture-urls::(original))",
options.Scope = { "r_basicprofile", "r_emailaddress" };
options.Events = new OAuthEvents
{
OnCreatingTicket = OnCreatingTicketLinkedInCallBack,
OnTicketReceived = OnTicketReceivedCallback
};
})
知道如何设置范围吗?
P.S。我尝试改编我的 ASP.NET Core 1.1 中的代码。此代码在 ASP.NET Core 1.1 应用程序中运行良好。
Scope = { "r_basicprofile", "r_emailaddress" }
语法仅在使用对象初始化时可用。在这里,options
对象不是从您的代码中实例化的,而是由 ASP.NET Core 直接提供的,因此您不能使用此语法。
好消息是 Scope
属性 是一个集合(在内部,一个哈希集)所以你可以简单地做:
options.Scope.Add("r_basicprofile");
options.Scope.Add("r_emailaddress");
如果您想删除默认范围,可以使用 options.Scope.Remove("scope")
或 options.Scope.Clear()
.
删除它们
我正在尝试在我的 ASP.NET Core 2.0 应用程序中实施 LinkedIn/OAuth 身份验证,我需要将范围设置为 { "r_basicprofile", "r_emailaddress" }
以便我可以访问用户的电子邮件、个人资料图片、等等
当我尝试在以下代码中设置范围时,出现以下错误:
Property or indexer 'OAuthOptions.Scope' cannot be assigned to -- it's read-only.
代码如下:
services.AddOAuth(CookieAuthenticationDefaults.AuthenticationScheme, options => {
options.SignInScheme = "LinkedIn";
options.ClientId = "1234567890";
options.ClientSecret = "1234567890";
options.CallbackPath = "/linkedin-callback";
// Configure the LinkedIn endpoints
options.AuthorizationEndpoint = "https://www.linkedin.com/oauth/v2/authorization",
options.TokenEndpoint = "https://www.linkedin.com/oauth/v2/accessToken",
options.UserInformationEndpoint = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url,picture-urls::(original))",
options.Scope = { "r_basicprofile", "r_emailaddress" };
options.Events = new OAuthEvents
{
OnCreatingTicket = OnCreatingTicketLinkedInCallBack,
OnTicketReceived = OnTicketReceivedCallback
};
})
知道如何设置范围吗?
P.S。我尝试改编我的 ASP.NET Core 1.1 中的代码。此代码在 ASP.NET Core 1.1 应用程序中运行良好。
Scope = { "r_basicprofile", "r_emailaddress" }
语法仅在使用对象初始化时可用。在这里,options
对象不是从您的代码中实例化的,而是由 ASP.NET Core 直接提供的,因此您不能使用此语法。
好消息是 Scope
属性 是一个集合(在内部,一个哈希集)所以你可以简单地做:
options.Scope.Add("r_basicprofile");
options.Scope.Add("r_emailaddress");
如果您想删除默认范围,可以使用 options.Scope.Remove("scope")
或 options.Scope.Clear()
.