2012-02-20 60 views
4

我试图从V5.3.2迁移到V6的SDK。我有一个ASP.NET 4.0 Canvas应用程序。我注意到,现在有没有更多的Facebook.Web.dll中(这是我以前使用),并发现了这个信息:从V5迁移到Facebook C#SDK的V6

> 去除Facebook.Web.dll中和Facebook.Web.Mvc的。 dll 从v6开始,我们贬低Facebook.Web.dll和Facebook.Web.Mvc.dll,并将不再提供它。 ... 从v6开始,您将不得不使用Facebook Javascript SDK获取访问令牌并使用安全https连接将其传递到服务器,或使用Facebook OAuth登录对话框。 解码已签名的请求(ParseSignedRequest/TryParseSignedRequest)已转移到FacebookClient。

var fb = new FacebookClient(); 
dynamic signedRequest = fb.ParseSignedRequest("app_secret", Request.Params["signed_request"]); 

< < < < (http://blog.prabir.me/post/Facebook-CSharp-SDK-Glimpse-into-the-Future.aspx) 所以,这一切都很好。以前,我在我的代码有这背后:

protected void Page_Load(object sender, EventArgs e) 
{ 

    var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me" } }; 

    if (auth.Authorize()) 
    { 
     ShowFacebookContent(); 
    } 
} 

要改变它,我现在得到的JavaScript SDK成功加载和我的用户登录:

<div id="fb-root"></div> 

<script type="text/javascript"> 
     FB.init({ appId: 'xxxxxxx', cookie: true, status: true, oauth: true }); 

     FB.getLoginStatus(function (response) { 
      if (response) { 
       alert(response.authResponse.accessToken); 
      } 
     }); 

</script> 

我测试过这一点,它成功登录到用户。但是,如何让它做回发并调用之前调用的服务器端方法(ShowFacebookContent)?我假设无论我做什么都必须传递accessToken或SignedRequest,以便fb.ParseSignedRequest可以工作,并且在服务器上我们可以生成一个FacebookClient。

我猜测,几个人会出现类似的情况,试图从facebook.web.dll迁移,所以任何指导都会非常棒。

回答

1

根据您的需要传递signed_request或access_token。

并且不要通过http传递access_token。使用安全https连接。

+0

谢谢,但在什么情况下我通过凭据?我可以设想我使用提交按钮来设置表单来传递这些内容,但是我希望在加载页面时触发此代码。 – BenjiFB 2012-02-20 19:43:55

+0

当页面加载时,你想要做什么确切的请求? – prabir 2012-02-20 19:56:28

+0

因此,我们假设最简单的示例:我想使用图形API来获取用户的名字,并将ASP:Label设置为该值。当然,我可以做这个客户端,但假设我想做这个服务器端(我可以做V5),并希望在页面加载时发生。 – BenjiFB 2012-02-20 20:40:29