第一步,準備作業,獲取Client ID和Client Secret
1、自行登陸GitHub官網,點擊Setting,如下圖:

2、繼續,點擊Developer settings,如下圖:

3、繼續,點擊Oauth Apps,如下圖:

4、繼續,點擊New Oauth App,如下圖:

5、繼續,填寫完畢后,點擊Register application,如下圖:

6、至此,我們已經成功拿到Client ID和Client Secret,另外,此頁面還可以更改步驟5填寫的相關資訊,如下圖:

第二步,代碼部分,實作GitHub第三方登錄
1、Login.aspx 代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="GitHubLogin.Login" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title></head><body> <form id="form1" runat="server"> <div> <a href=https://www.cnblogs.com/kudsu/p/"https://github.com/login/oauth/authorize?client_id=xxxxxxxxxxxxxxxxxxxxxx&state=STATE&redirect_uri=http://www.kudsu.xyz/">github登錄</a> </div> </form></body></html>
2、Login.aspx.cs 代碼
using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Net.Http;using System.Text;using System.Threading.Tasks;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace GitHubLogin{ public partial class Login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string code = Request.QueryString["code"] == null || Request.QueryString["code"].ToString() == "" ? "" : Request.QueryString["code"].ToString(); if (code != "") { //第二步,獲取token string tokenJson = LoadURLString("https://github.com/login/oauth/access_token?client_id=xxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxx&code=" + code + "&redirect_uri=http://www.kudsu.xyz/", "post"); JObject jo = (JObject)JsonConvert.DeserializeObject(tokenJson); tokenJson = jo["access_token"].ToString(); //第三步,獲取GitHub用戶資訊 string userJson = LoadURLString("https://api.github.com/user?access_token=" + tokenJson, "get"); //把GitHub用戶資訊輸出到頁面上 Response.Write(userJson); } } } /// <summary> /// 請求url /// </summary> /// <param name="url">地址</param> /// <param name="GetPost">post、get</param> /// <returns></returns> private string LoadURLString(string url, string GetPost) { System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url); request1.Method = GetPost; request1.ContentType = "application/json"; request1.Accept = "application/json"; request1.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"); request1.UserAgent = "Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0"; return new StreamReader(((HttpWebResponse)request1.GetResponse()).GetResponseStream(), Encoding.UTF8).ReadToEnd(); } }}
3、專案地址:https://github.com/kudsu/GitHubLogin
親,如果可以,給個星星~
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12353.html
標籤:ASP.NET
