首页 > PHP资讯 > 工具库 > ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录的实例详解

ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录的实例详解

工具库
本文主要介绍了QQ、微信、新浪微博OAuth2.0授权登录的示例,主要就是GET、POST远程接口,返回相应的数据,这里列出相关的代码,供大家参考。

不管是腾讯还是新浪,查看他们的API,PHP都是有完整的接口,但对C#支持似乎都不是那么完善,都没有,腾讯是完全没有,新浪是提供第三方的,而且后期还不一定升级,NND,用第三方的动辄就一个类库,各种配置还必须按照他们约定的写,烦而且乱,索性自己写,后期的扩展也容易,看过接口后,开始以为很难,参考了几个源码之后发现也不是那么难,无非是GET或POST请求他们的接口获取返回值之类的,话不多说,这里只提供几个代码共参考,抛砖引玉了。。。

我这个写法的特点是,用到了Session,使用对象实例化之后调用 Login() 跳转到登录页面,在回调页面调用Callback() 执行之后,可以从Session也可以写独立的函数(如:GetOpenID())中获取access_token或用户的唯一标识,以方便做下一步的操作。所谓绑定就是把用户的唯一标识取出,插入数据库,和帐号绑定起来。

1.首先是所有OAuth类的基类,放一些需要公用的方法

public abstract class BaseOAuth{  public HttpRequest Request = HttpContext.Current.Request;  public HttpResponse Response = HttpContext.Current.Response;  public HttpSessionState Session = HttpContext.Current.Session;  public abstract void Login();  public abstract string Callback();  #region 内部使用函数  ///   /// 生成唯一随机串防CSRF攻击  ///   ///   protected string GetStateCode()  {    Random rand = new Random();    string data = DateTime.Now.ToString("yyyyMMddHHmmssffff") + rand.Next(1, 0xf423f).ToString();    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();    byte[] md5byte = md5.ComputeHash(UTF8Encoding.Default.GetBytes(data));    return BitConverter.ToString(md5byte).Replace("-", "");  }  ///   /// GET请求  ///   /// 
  private void ShowError(string code, string description = null)  {    if (description == null)    {      switch (code)      {        case "20001":          description = "

配置文件损坏或无法读取,请检查web.config

"; break; case "30001": description = "

The state does not match. You may be a victim of CSRF.

"; break; case "50001": description = "

接口未授权

"; break; default: description = "

系统未知错误,请联系我们

"; break; } Response.Write(description); Response.End(); } else { Response.Write("

error:

" + code + "

msg:

" + description); Response.End(); } }}

5.web.config配置信息

    
                
                
            

以上就是ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录的实例详解的详细内容,更多请关注php中文网其它相关文章!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持8不支持0