1. 程式人生 > 其它 >在ASP.NET MVC5應用程式中快速接入QQ和新浪微博OAuth起步建立應用程式使用NUGET更新OWIN中介軟體啟動SSL支援申請騰訊QQ的Oauth申請新浪微博的Oauth快速接入資源地址&原始碼

在ASP.NET MVC5應用程式中快速接入QQ和新浪微博OAuth起步建立應用程式使用NUGET更新OWIN中介軟體啟動SSL支援申請騰訊QQ的Oauth申請新浪微博的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