在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth

这篇文章演示如何在你的ASP.NET MVC5应用程序中支持用户使用腾讯QQ和新浪微博的open authentication。

起步

安装Visual studio 2013 higher或者Visual studio express 2013 for web就不再赘述了,点击这里下载。

创建应用程序

打开vs,在Template中选择C#->asp.net web application ,命名为OauthDemo,并点击OK

在弹出窗口中选择MVC template,并且选择“Change authentication”选择Indivdula user Accounts

使用NUGET更新OWIN中间件

在Project Explorer中右键点击项目,选择”Manage Nuget Packages”,左边栏中选择Updates,然后点击右边的Update all,如果你没有发现Update all,说明你现在的包都是最新的(又或者是你人在中国,说知道呢…)

同样,在package manager console中,你也可以通过键入Update-package命令来更新所有的包

此时,点击F5应该可以执行你的应用程序,因为我们还没有做任何开发工作。

启动SSL支持

在几乎所有的Oauth提供商都要求接入的应用程序支持SSL连接,所以你需要启动IIS-express中SSL的支持。

在Solution Explorer中,点击MvcAuth,在属性窗口中(如果你没有看见,需要从菜单栏的Views中打开它),选择SSL Enabled为True

复制ssl的url,打开项目属性页面,选择Web选项卡,将地址拷贝到Project URL中并保存。

然后再HomeController上添加RequireHttps标签

[RequireHttps]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

此时重新启动应用程序,可能会得到一个警告,选择Yes并安装提示的证书就好了。

申请腾讯QQ的Oauth

1. 打开网址http://connect.qq.com/,或者http://connect.qq.com/intro/login

2. 登陆你的QQ账号,并点击QQ登陆->申请加入

3. 打开页面中,创建页面,并根据要求填写信息

这里比较麻烦的是,腾讯需要验证你输入的网址是否是你自己所有的,所以你需要有一个自己的域名,这里不要尝试修改host的方法,腾讯是后台验证的,所以没有什么卵用。

4.在创建好以后,在管理中心页面,就可以看到你的App id和app key啦

申请新浪微博的Oauth

1. 打开网址http://open.weibo.com/,并登录你的微博账号。

2. 在“微链接”->”网站接入“中,点击”立即接入”

3.同样按照要求输入内容,新浪也要求验证你的域名所有权,所以折腾去吧。

4.创建完成后,在“我的应用”里就可以看到了,打开你创建的应用,在测试账号中输入自己的账号,因为没有认证的账号是不允许进行开发和测试的登陆的

5.在“借口管理”->“授权机制”中,输入回调地址“https://www.yourdomain.xx/sign-in”

6.最后在“网站信息”->“基本信息”中,可以查看到app id 和app secert:

快速接入

1. 在Package manager console中,键入以下两个命令添加对腾讯QQ和新浪微博的oauth provider

Install-Package Microsoft.Owin.Security.Sina

Install-Package Microsoft.Owin.Security.Tencent

结果如图所示:

2. 打开App_Start目录下的Startup.Auth.cs文件,在文件顶部添加以下命名空间:

using Microsoft.Owin.Security.Tencent;
using Microsoft.Owin.Security.Sina;

3. 在app.UseExternalSignInCookie(…的调用后,添加以下两行代码,从而添加应用程序对腾讯QQ和新浪微博oauth的支持:

app.UseTencentAuthentication("101224440", "***************************************");
app.UseSinaAuthentication("2522592830", "******************************************");

4. 现在不可以通过支持按下F5来测试结果,因为各个oauth提供商会验证和调用你在上一节中设置的域名是否正确,有两种方法可以做到这一点,第一就是直接将程序部署并且解析域名,这种方式明显不适合开发;第二种方法也是接下来要使用的方法,将程序部署在本地IIS并且修改host文件。

打开IIS,创建应用程序,指向当前项目的根目录

而后修改host文件,添加以下内容:

127.0.0.1            www.yourdomain.xx

最后,编译你的应用程序,浏览器打开https://www.yourdomain.xx,点击”Login“,就可以在右侧看到添加的两个oauth provider啦:

资源地址&源码

https://www.nuget.org/packages/Microsoft.Owin.Security.Sina/

https://www.nuget.org/packages/Microsoft.Owin.Security.Tencent/

https://github.com/xiaoyaojian/OwinOAuthProvider

时间: 2024-08-06 11:32:20

在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth的相关文章

在ASP.NET MVC应用程序中随机获取一个字符串

在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs.com/insus/archive/2012/02/16/2354453.html 此篇实现方法多少是参照这个实现C#版本. 在应用程序下,创建一个CharacterUtility.cs: 这个类别中,分别有几个静态方法:一,为随机的小写字母: 二,是随机产生大写字母: 三,是随机产生数字: 四,是产生特殊

在ASP.NET MVC应用程序中实现Server.Transfer()类似的功能

在ASP.NET MVC应用程序中,如果使用Server.Transfer()方法希望将请求转发到其它路径或者Http处理程序进行处理,都会引发“为xxx执行子请求时出错”的HttpException异常.而在最终实现Server.Transfer()操作的方法内部,我看到这样几行代码. else if (!(handler is Page)) { error = new HttpException(0x194, string.Empty); } 很明显,在方法内部,所有的IHttpHandle

在ASP.NET 5应用程序中的跨域请求功能详解

在ASP.NET 5应用程序中的跨域请求功能详解 浏览器安全阻止了一个网页中向另外一个域提交请求,这个限制叫做同域策咯(same-origin policy),这组织了一个恶意网站从另外一个网站读取敏感数据,但是一些特殊情况下,你需要允许另外一个站点跨域请求你的网站. 跨域资源共享(CORS:Cross Origin Resources Sharing)是一个W3C标准,它允许服务器放宽对同域策咯的限制,使用CORS,服务器可以明确的允许一些跨域的请求,并且拒绝其它的请求.CORS要比JSONP

在WinForm应用程序中快速实现多语言的处理(2)--开发框架模块的整合

我在上篇随笔<在WinForm应用程序中快速实现多语言的处理>里面介绍了Winform开发中多语言的处理解决方案,整个多语言解决方案是以实际需求为驱动,以减少代码改动,高效处理为目的,通过基类继承的方式减少代码修改,通过引入翻译API方式减少翻译处理时间,本随笔继续深化这个多语言处理方案的介绍,是指整合在开发框架中进行无缝的使用. 1.多语言的处理步骤 1)提取多语言处理JSON文件 我们通过把程序界面或者代码里面的中文提取出来,放到JSON文件中,对不同模块可以分为不同的JSON文件,如下所

「wxParser」小程序插件:想在小程序中快速部署富文本?这个插件让你一步搞定

上期,我们在<「微信同声传译」小程序插件:快速实现语音转文字.文本翻译.语音合成等能力>一文中介绍了「微信同声传译」小程序插件的意义.作用以及应用.而在此之前,我们还介绍过「腾讯地图」.「腾讯视频」.「医院 LBS 位置服务」插件,有兴趣了解的读者可以点击「微信极客WeGeek」公众号底部菜单「极客干货 - 小程序插件」了解. 今天我们为大家推荐的是一款富文本渲染插件「wxParser」,目前 wxParser 支持对一般的富文本内容包括标题.字体大小.对齐和列表等进行解析.同时也支持表格.代

asp网络编程:Web程序中网页间数据传递方法小结

我们总是会遇到这样的情况,需要将数值从一个网页传递到另一个网页.在这篇文章中,向你展示了几种从一个网页向另一个网页传递数值的几种方法.在此例子中,创建的网页由一个文本控件和几个按钮控件组成.在文本框中输入的数据通过被标识在按钮控件中的不同方法从一个网页传递到另一个网页. Response.Redirect 让我们首先看一看如何使用Response.Redirect方法传递数据.这是它们之中最简单的方法.在文本框中输入一些数据,并且当你输入完成数据后,按下“Respose.Redirect”按钮.

连接弹性和命令拦截的 ASP.NET MVC 应用程序中的实体框架

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    上篇博客我们学习了EF 之 MVC 排序,查询,分页 Sorting, Filtering, and Paging For MVC About EF,本节继续学习 标题中的:连接弹性(微软解释:瞬态错误自动重试连接)和命令拦截(捕捉所有 SQL 查询发送到数据库,以便登录或改变它们) 上网查了大量的资料,网友们基本都是直接翻译原文:Connecti

Entity Framework的学习(ASP.NET MVC5的学习中的一部分)

第一步. 我创建了一个基于.net的mvc项目,创建model,写入以下代码 MovieDBContext类表示处理提取. 存储和更新的实体框架电影数据库上下文Movie类在数据库中的实例. MovieDBContext派生自DbContext实体框架提供的基类. 若要引用将DbContext并DbSet,你需要添加以下using在文件顶部的语句:using System.Data.Entity;因为DbContext属于Entityframework 已添加模型 (在 MVC 中的 M). 下

ASP.NET MVC应用程序中支持用户使用腾讯QQ和微信以及新浪微博的第三方登录

什么是第三方授权登录,就是一些大家都会有的帐号如QQ.微信.淘宝.微博等账户.通过那些巨头公司提供的api直接实现登录. 当然,我们是不可能得到你的用户名和密码的.不了解的人,可能会存在这个疑虑.我们可以通过第三方授权登录得到如昵称.性别.注册地址.年龄.头像等基本信息.当然,我们也可以得到你账户因为的唯一编码,就是OAuthId.什么是OAuth技术?大家自行了解,这里就不细讲了. 准备资料: 各平台相关授权appid以及appkey(新浪为App Secret) 申请地址: 新浪 申请入口