نحوه لاگین با Linkedin در MVC
چهارشنبه 1 دی 1395در این مقاله قصد داریم شما را با چگونگی لاگین در سایت با استفاده از 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
- ASP.net MVC
- 2k بازدید
- 5 تشکر