前言
很多對外應用的開發都考慮接入第三方登入來提高使用者的體驗感,避免使用者進行繁瑣的註冊登入(登入後的完善資料必不可免)。
而QQ、微信、支付寶、淘寶、微博等應用就是首選目標(無他,使用者群體大,支援發開發者授權應用)。
可以點選下面的地址體驗一下。
下面介紹基於OAuth2 的登入元件
1、建立專案
這裡使用 GitHub 登入做演示,因為GitHub的 開發者應用程式 的建立支援localhost的方式訪問,可以本地開發直接呼叫。
新建一個 Asp.Net Core Web 應用(模型-檢視-控制器) 專案,專案名 GithubLogin (你也可以起一個其他的名稱),選擇 .Net Core 3.1 (長期支援) 後建立專案。
2、安裝NuGet包
MrHuo.OAuth.Github
選擇1.0.0進行安裝
3、建立GitHub授權應用
入口1:
訪問 https://github.com/settings/applications/new 網站
注意:GitHub網站速度較慢,如果顯示 無法訪問此網站 重新整理一下多執行幾次,或者使用第二種入口註冊。
入口2:
訪問 https://github.com/ 進行登入,在右上角的頭像圖示旁邊下拉點選設定 Settings,
在出來的頁面點選開發者設定 Developer settings ,
選擇 OAuth App 應用程式,點選 New OAuth App 建立OAuth應用程式
4、配置授權key
把介面裡的 Client ID
,Client secret
,連同上一個介面裡填寫的 Authorization callback URL
全部填寫到配置檔案對應位置。現在配置檔案 appsettings.json
是這樣的:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "oauth": { "github": { "app_id": "c147cxxxxxxxxxxxxxxxxxxe6ea2", //OAuth App建立的Client ID "app_key": "03ef6xxxxxxxxxbe6f4f0febef5", //OAuth App建立的Client secrets "redirect_uri": "http://localhost:33180/oauth/githubcallback", //回撥地址(這個地址是你自己寫的,後面授權成功後做自己需要的功能) "scope": "repo" } } }
5、編寫程式碼
在 Startup.cs
檔案的ConfigureServices方法中注入元件:
services.AddSingleton(new GithubOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:github")));
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); //注入GitHub授權元件 services.AddSingleton(new GithubOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:github"))); }
在Controllers新建OAuthController.cs類,裡面的程式碼如下:
using Microsoft.AspNetCore.Mvc; using MrHuo.OAuth.Github; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace ThirdPartyLogin.Controllers { public class OAuthController : Controller { #region GitHub授權+回撥 //發起第三方授權申請 [HttpGet("oauth/github")] public IActionResult Github([FromServices] GithubOAuth githubOAuth) { return Redirect(githubOAuth.GetAuthorizeUrl()); } //第三方授權成功後回撥方法 [HttpGet("oauth/githubcallback")] public async Task<IActionResult> GithubCallback( [FromServices] GithubOAuth githubOAuth, [FromQuery] string code) { return Json(await githubOAuth.AuthorizeCallback(code)); } #endregion } }
然後執行程式,在位址列手動輸入訪問 發起第三方授權申請 的方法:http://localhost:33180/oauth/github 跳轉到授權頁面,
如下,點選綠色的按鈕同意,然後授權成功,
成功後呼叫我們之前配置的回撥方法,在這裡我們就可以自定義操作了,入庫或者其他。
授權成功返回的內容如下:
經過指定處理後,視覺化顯示為:
到這裡一個簡單的第三方GitHub授權指定網站登入就完成了,其他的授權都是大同小異,需要注意的是我們用到的元件需要去找一下,然後去各個平臺申請一個key。
當然,我這裡是白嫖的 開發者精選資訊 大佬的,更多用法可以直接去下載demo下來看,最後附上鍊接,大家可以去看看
相關文獻
- OAuth2:https://oauth.net/2/
- 原始碼下載: https://github.com/mrhuo/MrHuo.OAuth
- 演示地址:https://oauthlogin.net/
歡迎關注訂閱微信公眾號【熊澤有話說】,更多好玩易學知識等你來取
作者:熊澤-學習中的苦與樂 公眾號:熊澤有話說 出處:https://www.cnblogs.com/xiongze520/p/15039407.html 創作不易,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置註明作者和原文連結。
|