Facebook标签身份验证

时间:2011-05-05 23:20:29

标签: asp.net facebook asp.net-mvc-3 facebook-c#-sdk facebook-authentication

是否可以通过标签应用验证用户?

我正在尝试创建一个需要能够发布到墙上的ASP.NET MVC 3 facebook选项卡应用。

我的第一个猜测是使用CanvasAuthorizeAttribute

[CanvasAuthorize(Permissions="publish_stream")]

但它会使我的标签重定向到登录Facebook授权页面,然后返回画布页面,而不是停留在粉丝页(标签页)。

然后我删除CanvasAuthorize并尝试以下

public string Index()
{
    bool isAuthorized = FacebookWebContext.Current.IsAuthorized("publish_stream");

    return isAuthorized.ToString();
}
如果用户未获得授权,我可以决定启动授权弹出窗口,但我在这里遇到问题。

  • 以前通过其他方式使用stream_publish权限授权应用,然后将该页面作为应用运行(http://apps.facebook.com/ myapp / mytab ),返回从粉丝页面标签(http://www.facebook.com/ myfanpage ?sk = app_ myappid )运行页面时返回 false

为什么标签不能读取权限但画布页面可以?

1 个答案:

答案 0 :(得分:3)

通过Facebook页面,您可以通过检查signed_request来检测用户是否已授权您的应用。如果传递了user_id和oauth_token,则用户已经授权您的应用。如果没有,您可以通过Controller Action执行以下操作:

    string[] extendedPermissions = new[] { "publish_stream", "manage_pages" };
    var oauth = new FacebookOAuthClient(FacebookWebContext.Current.Settings);
    var parameters = new Dictionary<string, object> {
                { "redirect_uri", "http://www.facebook.com/pages/{SomeFacebookPage}?sk=app_{appId}"}
            };

    parameters["scope"] = String.Join(",", extendedPermissions);
    var loginUrl = oauth.GetLoginUrl(parameters);

    return Redirect(loginUrl.AbsoluteUri);

用户验证您的应用后,用户将被发送到“redirect_uri”,这可以是Facebook页面上的应用标签。