首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能将OAuthOptions.Scope分配给

不能将OAuthOptions.Scope分配给
EN

Stack Overflow用户
提问于 2017-08-19 22:49:40
回答 1查看 1.4K关注 0票数 7

我正试图在我的ASP.NET核心2.0应用程序中实现LinkedIn/OAuth身份验证,我需要将范围设置为{ "r_basicprofile", "r_emailaddress" },以便我可以使用用户的电子邮件、配置文件图像等。

当我试图在下面的代码中设置范围时,我会得到以下错误:

属性或索引器'OAuthOptions.Scope‘不能分配给--它是只读的。

下面是代码:

代码语言:javascript
运行
复制
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
   };
})

知道我该怎么设置范围吗?

我试图修改我的ASP.NET核心1.1中的代码。这段代码在ASP.NET Core1.1应用程序中运行良好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-19 22:57:33

只有在使用对象初始化时,Scope = { "r_basicprofile", "r_emailaddress" }语法才可用。在这里,options对象不是从代码中实例化的,而是由ASP.NET Core直接提供的,因此您不能使用这个语法。

好消息是,Scope属性是一个集合(在内部是一个哈希集),因此您可以简单地这样做:

代码语言:javascript
运行
复制
options.Scope.Add("r_basicprofile");
options.Scope.Add("r_emailaddress");

如果您想摆脱默认的作用域,可以使用options.Scope.Remove("scope")options.Scope.Clear()删除它们。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45776947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档