是否可以通过标签应用验证用户?
我正在尝试创建一个需要能够发布到墙上的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();
}
如果用户未获得授权,我可以决定启动授权弹出窗口,但我在这里遇到问题。
为什么标签不能读取权限但画布页面可以?
答案 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页面上的应用标签。