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

這篇文章演示如何在你的ASP.NET MVC5應用程序中支持用戶使用騰訊QQ和新浪微博的open authentication。git

起步

安裝Visual studio 2013 higher或者Visual studio express 2013 for web就再也不贅述了,點擊這裏下載。github

建立應用程序

打開vs,在Template中選擇C#->asp.net web application ,命名爲OauthDemo,並點擊OKweb

image

在彈出窗口中選擇MVC template,而且選擇「Change authentication」選擇Indivdula user Accountsexpress

image

使用NUGET更新OWIN中間件

在Project Explorer中右鍵點擊項目,選擇」Manage Nuget Packages」,左邊欄中選擇Updates,而後點擊右邊的Update all,若是你沒有發現Update all,說明你如今的包都是最新的(又或者是你人在中國,說知道呢…)瀏覽器

image

一樣,在package manager console中,你也能夠經過鍵入Update-package命令來更新全部的包app

image

此時,點擊F5應該能夠執行你的應用程序,由於咱們尚未作任何開發工做。asp.net

啓動SSL支持

在幾乎全部的Oauth提供商都要求接入的應用程序支持SSL鏈接,因此你須要啓動IIS-express中SSL的支持。dom

在Solution Explorer中,點擊MvcAuth,在屬性窗口中(若是你沒有看見,須要從菜單欄的Views中打開它),選擇SSL Enabled爲Trueide

image

複製ssl的url,打開項目屬性頁面,選擇Web選項卡,將地址拷貝到Project URL中並保存。測試

image

 

而後再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登錄->申請加入

image

3. 打開頁面中,建立頁面,並根據要求填寫信息

image

這裏比較麻煩的是,騰訊須要驗證你輸入的網址是不是你本身全部的,因此你須要有一個本身的域名,這裏不要嘗試修改host的方法,騰訊是後臺驗證的,因此沒有什麼卵用。

 

4.在建立好之後,在管理中心頁面,就能夠看到你的App id和app key啦

image

申請新浪微博的Oauth

1. 打開網址http://open.weibo.com/,並登陸你的微博帳號。

2. 在「微連接」->」網站接入「中,點擊」當即接入」

image

3.一樣按照要求輸入內容,新浪也要求驗證你的域名全部權,因此折騰去吧。

4.建立完成後,在「個人應用」裏就能夠看到了,打開你建立的應用,在測試帳號中輸入本身的帳號,由於沒有認證的帳號是不容許進行開發和測試的登錄的

image

5.在「藉口管理」->「受權機制」中,輸入回調地址「https://www.yourdomain.xx/sign-in」

image

6.最後在「網站信息」->「基本信息」中,能夠查看到app id 和app secert:

image

 

快速接入

1. 在Package manager console中,鍵入如下兩個命令添加對騰訊QQ和新浪微博的oauth provider

Install-Package Microsoft.Owin.Security.Sina

Install-Package Microsoft.Owin.Security.Tencent

結果如圖所示:

image

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,建立應用程序,指向當前項目的根目錄

image

然後修改host文件,添加如下內容:

127.0.0.1            www.yourdomain.xx

最後,編譯你的應用程序,瀏覽器打開https://www.yourdomain.xx,點擊」Login「,就能夠在右側看到添加的兩個oauth provider啦:

image

imageimage

image

資源地址&源碼

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

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

https://github.com/xiaoyaojian/OwinOAuthProvider

相關文章
相關標籤/搜索