多页Facebook Canvas应用程序的站点结构

时间:2012-05-30 23:50:43

标签: asp.net facebook-graph-api facebook-c#-sdk webforms facebook-canvas

这看起来似乎是一个明显的问题,但我已经在facebook开发者网站上查看了有关画布应用程序的问题,并在facebook csharp sdk上找到了我的问题的答案。

我正在使用facebook-c#-sdk v5.4x或类似的东西,.net 3.5使用webforms。

桌面的canvas应用程序将有多个入口点。

https://apps.facebook.com/my_canvas_app/Default.aspx
https://apps.facebook.com/my_canvas_app/Register.aspx?EventID=12345
https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx

我的第一个问题是,从Facebook的第一个请求,我收到signed_request facebook-c#-sdk 负责),我有oauth令牌,这是有效期约为2小时。在尝试发出oauth请求(查询图表等)之前,重新创建此oauth令牌并确保其有效的正确方法是什么?

现在我的所有链接(比如来自Default.aspx)都看起来像<a href="https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx" target="_top">Go to Some Other Page</a>,它最终会对Facebook进行往返,获得一个新的signed_request,从而获得更新的oauth令牌。< / p>

其次,当通过asp.net到我自己的网站进行常规表单回发时,我确保signed_request在表单上有一个简单的<input type="hidden" name="signed_request" value="<%=Request.Form["signed_request"]%>" />,这似乎适用于该应用程序。如果我省略了这个,那么回发没有oauth信息,导致事情失败。这是在画布应用程序中执行回发的正确方法吗?从我查看csharp-sdk的源代码可以看出,会话中没有任何内容存储请求之间的oauth令牌,因此多页/回发需要隐藏的输入和target =“_ top”链接,am我在这个演绎中纠正了吗?

第三,在开发移动画布应用程序(没有iframe)时,如果我的第一个假设是正确的,那么我页面上的所有链接仍然必须转到https://apps.facebook.com/my_canvas_app/MobilePage.aspx

如果有人能对这些主题有所了解,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

  

现在我的所有链接(比如来自Default.aspx)看起来像是转到其他页面,这最终会进行到Facebook的往返,获得新的signed_request,从而获得更新的oauth令牌。

我建议将JavaScript SDK嵌入到您的页面中 - 调用FB.getLoginStatus然后每次都应该为您提供有效的访问令牌。 您可以做的另一件事是交换您在用户登录时长时间访问的短时访问令牌,请参阅https://developers.facebook.com/roadmap/offline-access-removal/

如果您将访问令牌保存到某种会话中,那么我猜您必须通过回发将其从一个页面转移到另一个页面,是的。

(也许你应该看看https://developers.facebook.com/docs/authentication/access-token-expiration/。)