2012-01-31 56 views
0

我使用Asp.net MVC,並試圖用通過Flickr的API:http://flickrnet.codeplex.com/Flickr的.NET API獲得FROB與MVC

我看過的文件和son't知道如何得到這個爲MVC工作。請參閱文檔中的摘錄:

Web身份驗證?不同的如何?

對於基於Web的身份驗證,您必須在您的API密鑰的編輯 配置頁面中指定頁面以將用戶重定向到 之後他們已驗證您的應用程序。它被稱爲回叫URL。 當使用基於web的 認證時,您也不需要創建Frob。

您可以使用Flickr.AuthCalcWebUrl方法生成一個URL,以便將用戶重定向到 。

string url = flickr.AuthCalcWebUrl(AuthLevel.Write); 
Response.Redirect(url); 

然後由回調URL指定的網頁上面你在查詢字符串中傳遞 的FROB。例如。如果您的回撥URL是 http://example.com/flickr.aspx那麼用戶將被重定向到 http://example.com/flickr.aspx?frob=1234abcd1234abcd

然後你可以使用FROB來獲得身份驗證令牌如上 例如:

protected void Page_OnLoad(object sender, EventArgs e) 
{ 
    string frob = Request.QueryString["frob"]; 
    Flickr flickr = new Flickr(ApiKey, SharedSecret); 

我已經貼在AuthCalcWebUrl返回的URL到我callbackurl在我的應用程序的設置頁面。

問題是在MVC我如何做重定向然後得到frob?

回答

3

我剛剛這樣做,並認爲我會讓你知道我是如何做到的。

在我的第一個視圖(帶有導致嘗試授權的按鈕的視圖)中,我有標準索引方法,也有一個用於HTTP發佈的方法。這運行的代碼來請求授權,如果我打我的授權按鈕

[HttpPost] 
public ActionResult Index() 
{ 
    Flickr.CacheDisabled = true; 
    string secret = "sss"; 
    string apikey = "abc"; 
    Flickr myFlickr = new Flickr(apikey, secret); 

    var flickrFrob = myFlickr.AuthGetFrob(); 
    string url = myFlickr.AuthCalcUrl(flickrFrob, AuthLevel.Write); 
    Response.Redirect(url); 
} 

然後我有另一個行動,採取frob。

public ActionResult Authenticated(string frob) 
{ 
    Flickr.CacheDisabled = true; 
    string secret = "sss"; 
    string apikey = "abc"; 

    Flickr flickr = new Flickr(apikey, secret); 
    Auth auth = flickr.AuthGetToken(frob); 

    ViewData.Add("frob", frob); 
    return View(); 
} 

第二個動作是flickr中回調的位置。

因此,例如;如果這個動作是在家裏控制器回調將是
www.mysite.com/Home/Authenticated/

因爲這種行動方法接受的「FROB」這將與生成的代碼填充的字符串。

要查看此信息,您可以從我們的視圖輸出它,或將其存儲在任何需要的地方等。