zoukankan      html  css  js  c++  java
  • 【学习笔记】第三方登录之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

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

  • 相关阅读:
    通过使用精简客户端,且不需要安装的客户端,配合PLSQL连接oracle数据库
    JDBC连接
    多线程TCP的socket通信
    基于UDP协议的socket通信
    基于TCP协议的socket通信
    设计模式之单例模式
    设计模式之代理模式
    设计模式之策略模式
    >hibernate-session中的方法
    >hibernate的四种状态
  • 原文地址:https://www.cnblogs.com/kudsu/p/11672610.html
Copyright © 2011-2022 走看看