我尝试从V5.3.2迁移到SDK的V6。我有一个ASP.NET 4.0 Canvas应用程序。我注意到现在已经没有facebook.web.dll(我之前使用过),并且发现了这个信息:
> 删除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迁移出来,所以任何指导都会很棒。
答案 0 :(得分:1)
根据您的需要传递signed_request或access_token。
并且也不要通过http传递access_token。使用安全的 https 连接。