2010-12-19 82 views
1

我正在使用Facebook C#SDK開發iframe Facebook應用程序。帶有多個控制器的Facebook ASP.NET MVC應用程序

我看着例子,找到這段代碼做授權的控制器:

namespace Auth_And_Allow.Controllers 
{ 
    [HandleError] 
    public class HomeController : Controller 
    { 
     [CanvasAuthorize(Perms = "user_about_me")] 
     public ActionResult Index() 
     { 
      FacebookApp fbApp = new FacebookApp(); 
      if (fbApp.Session != null) 
      { 
       dynamic result = fbApp.Get("me"); 

       ViewData["Firstname"] = result.first_name; 
       ViewData["Lastname"] = result.last_name; 
      } 

      return View(); 
     } 
    } 
} 

但是,如果我的應用程序使用了很多不止一個控制器,我應該怎麼辦?

我應該在所有控制器中使用相同的授權碼還是有其他方法? (我知道它會以這種方式工作,但現在我正在尋找構建Facebook應用的最佳實踐)

回答

1

CanvasAuthorize屬性將確保您的用戶已登錄並具有適當的權限。您不需要通過檢查會話是否爲空來再次檢查。此外,CanvasAuthorize屬性(如常規的Authorize屬性)可以應用於您的控制器以及您的操作。我只想做這樣的事情:

[CanvasAuthorize(Perms = "user_about_me")] 
public class FirstController : Controller { 


} 

[CanvasAuthorize(Perms = "user_about_me")] 
public class SecondController : Controller { 

} 

確保您使用名爲CanvasRedirect控制器通過擴展與this.CanvasRedirect引用的Facebook.Web.Mvc命名空間的控制器內訪問。這些重定向幫助程序將確保您正確重定向,並且不會「丟失」用戶的會話。

+0

謝謝我錯過了CanvasRedirect部分 – Ben 2010-12-19 22:07:11