نحوه لاگین با Linkedin در MVC

چهارشنبه 1 دی 1395

در این مقاله قصد داریم شما را با چگونگی لاگین در سایت با استفاده از Linkedin در MVC آشنا کنیم که در زیر به توضیح آن میپردازیم.

نحوه لاگین با Linkedin در MVC

در وهله ی اول باید هدف خود را از این کد مشخص کنیم. در این مقاله هدف ما Sign in / Login با استفاده از LinkedIn در MVC است.

مرحله اول :

نخست شما نیاز به ساخت یک  empty MVC application دارید.

1-بر روی file زده و گزینه new Project را انتخاب کنید

2-در پنجره ی باز شده ،در سمت راست آن زبانه ی #C را انتخاب و سپس بر روی web کلیک کنید. و نام آن را ما در اینجا "DemoLinkedINLogin" گذاشته ایم. وسپس ok را بزنید.

3- سپس در پنجره ی باز شده در  زیر تمپلیت  ASP.NET 4.5.2 شما MVC را انتخاب کنید.سپس بر روی "Change Authentication"  کلیک کرده و سپس  "No Authontication"  را انتخاب کنید.

مرحله دوم :

برای ورود و لاگین با linkedin ، ما نیاز به ساخت حساب کاربری Linkedin و سپس به client_id و client_secret نیاز داریم.

1- وارد حساب کاربری خود در Linkedin شوید. برای این کار اینجا کلیک کنید.

2- از منو بر روی  "My Apps" کلیک کنید.

3-حال یک app برای login API بسازید. بر روی "Create Application" کلیک کنید.

4-تمام موارد آن را برای برنامه خود پر کنید.

نکته : آدرس localhost خود را در "Website URL"  وارد کنید.بعد از پر کردن فرم بر روی دکمه  "Submit" کلیک فرمایید.

حال ما نیاز به وارد کردن آدرس Authorized Redirect داریم.

5-در آخر همانطور که نیاز داشتیم ، client_id و client_secret خود را دریافت میکنیم.

مرحله سوم :

حالا وقت کد است.فقط قبل از آن باید بدانید که اعتبار سنجی API Linkedin بر پایه ی پروتکل  OAuth 2.0 برای اجازه دسترسی است.

1-بنابراین ما نیاز به نصب کتابخانه RestSharp داریم به این دلیل که ما از  RestAPI برای OAuth 2.0 استفاده میکنیم.

برای این کار به tools بروید و روی NuGet Package Manager کلیک کرده و در Package Manager Console دستور زیر را اجرا کنید :

"Install-Package Restsharp"

2- حال ما نیاز به درخواست کد Authorization  داریم

(GET)URL

https://www.linkedin.com/oauth/v2/authorization

پارامتر ها :

response_type: code  
client_id: Your client id  
redirect_uri: Return url of your website  
scope: r_basicprofile

ساخت  یک متد اکشن :

public ActionResult LinkedIN() {  
    //Need to install below library  
    //Install-Package Restsharp  
    return View();  
}  
Add View  
for that action method Paste Below code in LinkedIN.cshtml < html > < head > < title > LinkedIN Login API < /title> < /head> < body > < div > < a href = "https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=enter your client id here&redirect_uri=enter your redirect url here&state=987654321&scope=r_basicprofile"  
class = "btn btn-primary" > Hureee!Login with LinkedIN < /a> < /div> < /body> < /html> 

3-در اینجا ما نیاز به مدیریت  Response  آن درخواست داریم. ما کد و state parameter را در Response میگیریم.

با استفاده از کد زیر ، ما میتوانیم  "access_token" را بدست آوریم. با استفاده از  access_token اطلاعات عمومی در مورد کاربر را دریافت کرد.

Create an ActionResult method to handle Authorization.  
public ActionResult LinkedINAuth(string code, string state) {  
    //This method path is your return URL  
    return View();  
}  

نخست ، ما نیاز به گرفتن access_token  برای  RestAPI که استفاده میکنیم داریم.

URL(POST)

https://www.linkedin.com/oauth/v2/accessToken

پارامتر 

grant_type: authorization_code  
code: code that is get from Authorization response  
redirect_uri: Return url of your website  
client_id: your client id  
client_secret: your client secret  
public ActionResult LinkedINAuth(string code, string state) {  
    //This method path is your return URL  
    try {  
        //Get Accedd Token  
        var client = new RestClient("https://www.linkedin.com/oauth/v2/accessToken");  
        var request = new RestRequest(Method.POST);  
        request.AddParameter("grant_type", "authorization_code");  
        request.AddParameter("code", code);  
        request.AddParameter("redirect_uri", "http://localhost:57633/Home/LinkedINAuth");  
        request.AddParameter("client_id", "your client id here");  
        request.AddParameter("client_secret", "your client secret here");  
        IRestResponse response = client.Execute(request);  
        var content = response.Content;  
    } catch () {  
        throw;  
    }  
    return View();  
}  

ما  access_token را گرفتیم. حال ما اطلاعات پایه ای کاربر با استفاده از RestAPI میگیریم.

URL(POST)

https://api.linkedin.com/v1/people/~?oauth2_

پارامتر :

access_token: access token that is get from above response  
code: code that is get from Authorization response  
format: json  
public ActionResult LinkedINAuth(string code, string state) {  
    //This method path is your return URL  
    try {  
        //Get Accedd Token  
        var client = new RestClient("https://www.linkedin.com/oauth/v2/accessToken");  
        var request = new RestRequest(Method.POST);  
        request.AddParameter("grant_type", "authorization_code");  
        request.AddParameter("code", code);  
        request.AddParameter("redirect_uri", "http://localhost:57633/Home/LinkedINAuth");  
        request.AddParameter("client_id", "your client id here");  
        request.AddParameter("client_secret", "your client secret here");  
        IRestResponse response = client.Execute(request);  
        var content = response.Content;  
        //Get Profile Details  
        client = new RestClient("https://api.linkedin.com/v1/people/~?oauth2_access_token=" + linkedINVM.access_token + "&format=json");  
        request = new RestRequest(Method.GET);  
        response = client.Execute(request);  
        content = response.Content;  
    } catch () {  
        throw;  
    }  
    return View();  
}  

آموزش asp.net mvc

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید