【问题标题】:Facebook's "signed_request" is empty when first starting app首次启动应用程序时,Facebook 的“signed_request”为空
【发布时间】:2011-07-31 00:49:16
【问题描述】:

我必须将 Facebook Credits 添加到我的应用程序中,为此我必须激活“OAuth 2.0 for Canvas”,它应该向我的应用程序发送签名请求

但我注意到,当我在一段时间内(或在不同的浏览器中)不使用该应用程序后首次启动该应用程序时,signed_request 为空。如果我重新加载页面,那么它就在那里。但第一次,它总是空的。我使用 $_REQUEST['signed_request'] 来获取它。

我的猜测是,这一定与 cookie 或会话过期有关。

有什么想法吗?

【问题讨论】:

  • 我发现了一些可能有帮助的东西:第一次调用应用程序时,它确实获得了签名请求。但是,然后, require_login() 强制页面重新加载,并且在重新加载时,signed_request 为空。仅当您有一段时间未使用该应用程序或删除 cookie 时才会发生这种情况。顺便说一句,我必须使用特殊版本的 require_login 来防止它重定向到我的托管 url(而不是应用程序 url)......我从这里得到了窍门 foobots.net/breakouts.html (iframe_require_login)
  • 到目前为止,我想唯一的解决方案是只使用 GRAPH api 并摆脱 REST api

标签: php facebook oauth-2.0


【解决方案1】:

在您的应用设置中,请务必在您的应用路径(或标签网址)上添加斜杠 - “/”。将其他设置保留为默认值。

【讨论】:

  • 感谢您的回复。现在不确定这是否相关,因为我使用的是 GRAPH api 而不是 REST,但可能对其他人有帮助。
【解决方案2】:

答案:打开应用程序时发送了签名请求。但随后 require_login() 会导致页面重新加载(并非总是如此,但有时会),然后 signed_request 会丢失,从而造成根本没有发送 signed_request 的错觉。

解决方案:我用 GRAPH api 调用替换了所有 REST api 调用。

希望这些信息对某人有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多