Facebook C#Iframe授权

时间:2010-12-16 16:32:54

标签: authentication jquery facebook-c#-sdk

我有一个使用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这可能有意义,但这绝对不是我想要的。在这种情况下,如何验证用户身份? 谢谢你的回答。

3 个答案:

答案 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是自动的,这就是我收到错误的原因