Authentication Facebook C#Iframe授权
我有一个IFrame Facebook应用程序,它使用Facebook C#SDK。我还使用jquery并异步加载一些页面组件。例如,我从主页调用以下javascript(此时用户已通过身份验证) 问题是在Authentication Facebook C#Iframe授权,authentication,jquery,facebook-c#-sdk,Authentication,Jquery,Facebook C# Sdk,我有一个IFrame Facebook应用程序,它使用Facebook C#SDK。我还使用jquery并异步加载一些页面组件。例如,我从主页调用以下javascript(此时用户已通过身份验证) 问题是在GetMyBalance.aspx:PageLoad中,用户没有经过身份验证。我试着加上 FacebookApp app = new FacebookApp(); CanvasAuthorizer auth = new CanvasAuthorizer(app); if (!auth.I
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
,这可能有道理,但这绝对不是我想要的。在这种情况下,如何对用户进行身份验证?
谢谢您的回答。您是否尝试过在facebookSettings中启用cookie支持
<facebookSettings apiKey="blah" apiSecret="blah" appId="blah" cookieSupport="true" />
您可以不使用cookies来完成。在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);
cookieSupport似乎不是一个有效的属性: “分析器错误消息:无法识别的属性'cookieSupport'。请注意,属性名称区分大小写。” ---更新--- 很抱歉,我发现:
SDK 4.2.1 cookieSupport是自动的,这就是为什么我会出错的原因谢谢,我完全忘记了它。它是有效的,但我只是想知道是否有其他方法可以做到这一点?我对Safari有问题,它不喜欢家长为iframe设置cookie。这个cookie是由Facebook JS SDK设置的吗?c#是在iframe的上下文中运行的,因此不应该出现问题。
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);