在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

image

在彈出窗口中選擇MVC template,並且選擇“Change authentication”選擇Indivdula user Accounts

image

使用NUGET更新OWIN中間件

在Project Explorer中右鍵點擊項目,選擇”Manage Nuget Packages”,左邊欄中選擇Updates,然后點擊右邊的Update all,如果你沒有發現Update all,說明你現在的包都是最新的(又或者是你人在中國,說知道呢…)

image

同樣,在package manager console中,你也可以通過鍵入Update-package命令來更新所有的包

image

此時,點擊F5應該可以執行你的應用程序,因為我們還沒有做任何開發工作。

啟動SSL支持

在幾乎所有的Oauth提供商都要求接入的應用程序支持SSL連接,所以你需要啟動IIS-express中SSL的支持。

在Solution Explorer中,點擊MvcAuth,在屬性窗口中(如果你沒有看見,需要從菜單欄的Views中打開它),選擇SSL Enabled為True

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM