第三方登录之GitHub篇

Posted kudsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三方登录之GitHub篇相关的知识,希望对你有一定的参考价值。

第一步,准备工作。获取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

    亲,如果可以,给个星星~

 

以上是关于第三方登录之GitHub篇的主要内容,如果未能解决你的问题,请参考以下文章

Web 三方登录实现(基于OAuth2.0,包含Github和QQ登录)

AppDelegate减负之常用三方封装 - 友盟推送篇

初识 GitHub · 简介篇

iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现

iOS开发之第三方登录微信-- 史上最全最新第三方登录微信方式实现

Github第三方登录