• 【学习笔记】第三方登录之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

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

  • 相关阅读:
    Source Insight中文注释乱码、字体大小、等宽解决方法
    linux API函数大全
    Linux常用命令
    iOS开发中,ScrollView放大后,子视图位置计算的数据分析
    将当前屏幕保存为图片
    AutoLayout相关方法及实现过程
    iOS开源库
    UIWebView开发中,js与oc,js与swift交互,相互传递参数的方法
    更新Xcode导致插件不能使用的解决办法
    关于Xcode不能打印崩溃日志
  • 原文地址:https://www.cnblogs.com/kudsu/p/11672610.html
Copyright © 2020-2023  润新知