【问题标题】:Facebook Tab AuthenticationFacebook 标签身份验证
【发布时间】:2011-05-05 23:20:28
【问题描述】:

是否可以通过标签应用程序对用户进行身份验证?

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

我的第一个猜测是使用CanvasAuthorizeAttribute

[CanvasAuthorize(Permissions="publish_stream")]

但它使我的标签重定向到登录 facebook 授权页面,然后返回到 canvas 页面,而不是停留在 fanpage(标签)中。

然后我删除 CanvasAuthorize 并尝试以下操作

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

    return isAuthorized.ToString();
}

如果用户未获得授权,我可以决定启动授权弹出窗口,但我在这里遇到了问题。

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

为什么tab不能读取权限,而canvas页面可以?

【问题讨论】:

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


    【解决方案1】:

    从您的 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 页面上的应用标签。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2012-05-01
      • 1970-01-01
      • 2015-08-10
      • 2017-11-27
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多