0

我正在按照对话框文档尝试在 Windows 8 应用商店应用程序 (html5/javascript) 中显示对话框。

https://developers.facebook.com/docs/reference/dialogs/

在 Windows 8 应用商店应用程序中,我们必须使用 iframe 来显示另一个网页。这是我所做的一个例子:

<iframe src="https://www.facebook.com/dialog/feed?app_id=145634995501895&redirect_uri=http://www.facebook.com&show_error=true&display=iframe&access_token={access_token}"></iframe> 

由于它是 iframe,我指定 display=iframe 和 access_token={access_token}。如果您想尝试,请记得更改 access_token。

我收到以下错误:

API Error Code: 110
API Error Description: Invalid user id
Error Message: Missing user cookie (to validate session user)

在此处输入图像描述

我想这可能是由于用户尚未登录造成的。在文档(https://developers.facebook.com/docs/reference/dialogs/)中,它说“如果用户尚未登录,Facebook 将在显示您调用的对话框之前提示他们登录。” 我想知道如何提示用户登录?我是否错过了提示用户登录的参数?我查看了参数,我似乎没有找到任何东西。

感谢你的帮助。

4

1 回答 1

0

我看到你的不同行为,我将在这里记录,即使它可能不是“你的答案”。

我获得了自己的访问令牌,当我使用您的 IFRAME 时,我确实看到了重定向到 Facebook.com 以登录的尝试;然而,随之而来的是 JavaScript 控制台中的安全错误 - 包括以下内容:

APPHOST9613:该应用程序无法导航到 https://www.facebook.com/login.php?api_key=177388709024886&skip_api_login=1 ... 因为这个错误: FORBIDFRAMING。

对 login.php 脚本的请求会生成一个带有X-FRAME-OPTIONS 标头的响应,以拒绝。这确实会阻止来自 Facebook 的登录页面出现在应用程序的 IFRAME 中 - 因此是 FORBIDFRAMING。

在 MSDN 论坛线程上也有一些讨论,它有点过时了,但从那时起我不知道有任何变化。

我没有尝试使用Windows Azure Mobile Services直接使用 Window 8 应用程序登录 Facebook ,但它可能是值得尝试的。Azure 移动服务的设置非常简单,因此您将很快知道 HTML5/JS Windows Store 应用程序中是否仍然存在问题。

于 2013-02-07T06:32:59.970 回答