我有一个使用Facebook C#SDK的IFrame Facebook应用程序。我还使用jquery并异步加载一些页面组件。例如,我从主页面调用以下javascript(此时用户已通过身份验证)
$.ajax({
type: "POST",
url: "Ajax/GetMyBalance.aspx",
datatype: 'text',
success: function (html) {
$('#balance_div').html(html);
}
});
问题是在GetMyBalance.aspx:PageLoad
中用户未经过身份验证。我尝试添加
FacebookApp app = new FacebookApp();
CanvasAuthorizer auth = new CanvasAuthorizer(app);
if (!auth.IsAuthorized()) // always true when page is loaded first time
{
var url = auth.GetLoginUrl(new HttpRequestWrapper(Request));
var content = CanvasUrlBuilder.GetCanvasRedirectHtml(url);
Response.ContentType = "text/html";
Response.Write(content);
Response.End();
}
到GetMyBalance.aspx:PageLoad
;它确实对用户进行了身份验证,但它也将浏览器重定向到Myapp/Ajax/GetMyBalance.aspx
这可能有意义,但这绝对不是我想要的。在这种情况下,如何验证用户身份?
谢谢你的回答。
答案 0 :(得分:1)
您是否尝试在facebookSettings中启用Cookie支持?
<facebookSettings apiKey="blah" apiSecret="blah" appId="blah" cookieSupport="true" />
答案 1 :(得分:1)
你可以在没有cookie的情况下完成。在SDK设置中设置cookieSupport = false并使用cookie = false初始化Javascript客户端库。然后在发布之前使用Javascript客户端库获取auth令牌,将auth令牌传递给服务器,并使用它来实例化您的FacebookApp实例。
FB.getLoginStatus(function (response) {
if (response.session) {
$('#AuthToken').val(response.session.access_token);
$('form').ajaxSubmit(options);
return false;
} else {
// not logged in, prompt them to retry
return false;
}
}, true);
答案 2 :(得分:0)
好吧,cookieSupport似乎不是一个有效的属性:
“分析器错误消息:无法识别的属性'cookieSupport'。请注意,属性名称区分大小写。”
---更新---
道歉,我发现了这个: http://facebooksdk.codeplex.com/releases/view/59012
在SDK 4.2.1中,cookieSupport是自动的,这就是我收到错误的原因