小编典典

iFrame应用中的Facebook C#SDK,AJAX

ajax

我正在使用Facebook C#SDK为Facebook开发iFrame应用程序。我认为该用户正在认证,并且可以使用Graph
API(FaceBookApp.Api(“ / userid”))获取其用户名。

我现在的问题是,当我对页面进行AJAX调用时,我将无法再使用Api。用户ID为0。打开FireBug时,请求的响应为“不支持的get请求”。我怀疑这与AJAX请求正在使用其他会话进行呼叫且该会话未通过身份验证有关。我想知道是否有什么办法可以解决这个问题?我知道我可以对请求的页面进行重新认证,但这意味着我必须对似乎效率不高的每个请求都进行重新认证。我正在使用Jquery发出请求。

任何帮助深表感谢。

谢谢


阅读 278

收藏
2020-07-26

共1个答案

小编典典

问题是,在iframe中使用ajax调用时,您必须将客户端的会话信息发送到服务器。否则,FacebookApp无法知道当前用户是谁。您可以通过以下两种方法之一解决此问题。

  1. 您可以将整个signed_request值发送到服务器。
  2. 您可以使用Javascript SDK来获取用户访问令牌,并将该值仅发送到服务器。

我认为第一种方法是最好的。您需要做的就是更改您的ajax网址,使其包含已签名的请求,如下所示:

var ajaxUrl
=’/services/example?signed_request=<%=Request.Querystring[“signed_request“]%>’;

然后,使用新的网址像平常一样拨打电话即可。之后,FacebookApp类将从ajax请求读取会话,您将很高兴。

2020-07-26