C#Facebook SDK授权流程 - 如何重定向回页面?

时间:2011-05-23 17:30:06

标签: facebook-c#-sdk

我有一个应用程序,将在Facebook页面标签中使用,我将请求基本权限。

我在ASP.NET 3.5中使用ASP.NET MVC。

我正在使用以下操作属性:

[HttpPost]
[CanvasAuthorize]
public ActionResult Index(string signed_request)
{
    ViewData["section"] = "post";
    FacebookPageModel page = new FacebookPageModel();
    if (!string.IsNullOrEmpty(signed_request))
    {
        string signedRequest = Request.Form["signed_request"];
        var DecodedSignedRequest = 
            FacebookSignedRequest.Parse(
             ((FacebookConfigurationSection)   
                ConfigurationManager
                    .GetSection("facebookSettings"))
                    .AppSecret, 
            signed_request);
        var SignedRequestData = DecodedSignedRequest.Data;
        var RawRequestData = (IDictionary<string, object>)SignedRequestData;
        // ok, start getting the data
        page.user_id = FacebookWebContext.Current.UserId.ToString();
        if (RawRequestData.ContainsKey("page") == true)
        {
            Facebook.JsonObject RawPageData = 
                (Facebook.JsonObject)RawRequestData["page"];
            if (RawPageData.ContainsKey("liked") == true)
            {
                page.UserLikesThisPage = (bool)RawPageData["liked"];
            }
        }

        if (RawRequestData.ContainsKey("app_data") == true)
        {
            page.app_data = RawRequestData["app_data"].ToString();                    
        }
    }
    return View(page);
}

public class FacebookPageModel
{
    public Dictionary<string, string> SignedRequestParameters { get; set; }
    public bool UserLikesThisPage { get; set; }
    public string app_data { get; set; }
    public string user_id { get; set; }
    public IEnumerable<TwitterSearchResultsModel> tweets { get; set; }
}   

的web.config:

<facebookSettings 
    appId="221731264504206" 
    appSecret="blah-blah-blah" 
    canvasUrl="http://url-of-canvas-page-tab/" 
    canvasPage="http://url-of-canvas-page-tab/" />

在没有任何其他参数的情况下调用CanvasAuthorize似乎请求基本权限,这就是我想要的。问题是,单击“允许”后,转发网址会将我发送到用户的个人资料页面,而不是我的页面选项卡。

如何配置我的应用以在允许所请求的权限后将用户转发回主叫页面?

谢谢, 斯科特

2 个答案:

答案 0 :(得分:1)

事实证明[CanvasAuthorize]有一些我可以使用的附加参数:

[CanvasAuthorize(ReturnUrlPath="enter-url-here")]

我知道这很奇怪,我不知道这一点,因为C#Facebook SDK的记录非常好。 :^)

但它是免费的,所以我该抱怨谁,对吧?

感谢。

答案 1 :(得分:0)

CanvasAuthorize不仅适用于制表符,而仅适用于画布应用程序。