2012-01-31 44 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”这将与生成的代码填充的字符串。

要查看此信息,您可以从我们的视图输出它,或将其存储在任何需要的地方等。