第三方登錄之GitHub篇

  • 2019 年 10 月 15 日
  • 筆記

第一步,準備工作。獲取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://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

    親,如果可以,給個星星~

 

Tags: