页面选项卡中的脸书应用 - 如何获取回调 URL


facebook app in a page tab - How to get callback URL

我在这里有点 22 号陷阱的情况。

当您将应用程序加载到选项卡中并请求权限时,您需要随之发送回调 URL。

回调 url 有点像任务,因为在页面上http://www.facebook.com/pages/<PAEG NAME>/<PAGE ID>?sk=app_<APP ID>获取<PAGE ID>的唯一方法是将其从签名的请求中取出:

parse_signed_request($_REQUEST['signed_request'], $APPSecret)

只有在用户授予权限时才能执行此操作。并且您需要ID才能获取<PAGE NAME>,这基本上意味着我无法构造回调url...

有谁知道在页面加载然后重新加载页面时立即请求权限的更好方法或不同方法?

看来你有点困惑,这里有几点:

  1. 回调(重定向)URL 应与您在应用程序设置中指定的选项卡 URL 相对(或相同)。像这样:

    http://www.example.com/canvas/tab/index.php
    

    所以不需要页面 ID。

  2. 即使不需要页面 ID,您仍然会在signed_request中收到它(即使未经授权)!
    仔细阅读Facebook文档相关部分:

当用户选择您的主页标签页时,您 威尔收到signed_request 带有一个附加参数 参数,page 。此参数 包含一个带有id ( 当前页面的页面 ID)admin (如果用户是页面管理员), 和liked(如果用户喜欢 页)。与画布页面一样,您将 未接收所有用户信息 可在 signed_request直到用户 授权你的应用。

因此,您不会收到的是用户ID,而不是页面ID,这很明显,因为管理员"允许"该应用程序。

希望这会为您解决问题。

使用 JavaScript SDK

http://developers.facebook.com/docs/reference/javascript/

并使用此允许对话框

http://developers.facebook.com/docs/reference/javascript/FB.login/

这样,您甚至不需要刷新。

此外,即使没有用户允许,您也可以在signed_request中获得page_id。你说的是user_idoauth_token,除非登录用户不允许你的应用,否则它们不会被传递。