Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication Facebook C#Iframe授权_Authentication_Jquery_Facebook C# Sdk - Fatal编程技术网

Authentication Facebook C#Iframe授权

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

我有一个IFrame Facebook应用程序,它使用Facebook C#SDK。我还使用jquery并异步加载一些页面组件。例如,我从主页调用以下javascript(此时用户已通过身份验证)

问题是在
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);