OAuthOptions.Scope Cannot Be Assigned To
Asked Answered
U

1

7

I'm trying to implement LinkedIn/OAuth authentication in my ASP.NET Core 2.0 app and I need to set the scope to { "r_basicprofile", "r_emailaddress" } so that I can user's email, profile image, etc.

When I try to set the scope in the following code, I'm getting the following error:

Property or indexer 'OAuthOptions.Scope' cannot be assigned to -- it's read-only.

Here's the code:

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
   };
})

Any idea how I can set the scope?

P.S. I tried to adapt the code from my ASP.NET Core 1.1. This code was working fine in the ASP.NET Core 1.1 app.

Us answered 19/8, 2017 at 22:49 Comment(0)
L
12

The Scope = { "r_basicprofile", "r_emailaddress" } syntax is only available when using object initialization. Here, the options object is not instantiated from your code but directly provided by ASP.NET Core so you can't use this syntax.

The good news is that Scope property is a collection (internally, a hash set) so you can simply do:

options.Scope.Add("r_basicprofile");
options.Scope.Add("r_emailaddress");

If you want to get rid of the default scopes, you can remove them using options.Scope.Remove("scope") or options.Scope.Clear().

Lessee answered 19/8, 2017 at 22:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.