【问题标题】:How to determine if an app is authorized to a fan page如何确定应用是否被授权访问粉丝页面
【发布时间】:2011-08-27 03:06:18
【问题描述】:

如果以前有人问过这个问题,请原谅我,但我无法为这个看似简单的问题找到答案。我有一个应用程序,该应用程序通过我构建的网站的流程授权给用户和用户的粉丝页面。流程是这样的:

访问网站 --> 授权网站查看粉丝页面列表 --> 选择粉丝页面将应用安装到 --> 授权应用到用户帐户 --> 授权应用到粉丝页面

我已经完成了所有工作(让我告诉你一个过程),并且一切都按预期运行。我正在开发一个管理界面来管理不在 Canvas 应用程序位置但在网站本身上的应用程序。我还没有找到一种方法来确定该应用程序是否已安装。 Graph API / FQL 似乎不支持此功能。

我的两个问题是:

  • 我有用户 ID 和粉丝页面 ID,但我无法确定所述粉丝页面是否已授权我的应用程序。根据这个答案将确定我是显示“安装此应用程序”面板还是管理面板。

  • 我读过最好的方法是在应用程序最初授权时存储用户ID,但在应用程序授权后,用户被发送到粉丝页面的墙,我不知道如何通知我的 iframe 应用。

【问题讨论】:

  • 更新了这个问题的标题,以反映这个问题的答案,以帮助其他陷入这个特殊障碍的人。

标签: facebook facebook-graph-api facebook-c#-sdk facebook-fql


【解决方案1】:

[编辑] 我误解了您的问题,并认为您的实施比您似乎拥有的要少:如果您拥有用户的 manage_pages 权限,您可以获得他们每个页面的页面访问令牌,并访问一个列表当前在该页面上作为选项卡安装的应用程序 - 说明位于 https://developers.facebook.com/docs/reference/api/page/#tabs [/编辑]

对您应用的“页面标签网址”发出的每个请求都将包含一个 signed_request 参数。 https://developers.facebook.com/docs/authentication/signed_request/ 解释了解码它的方法 - 当您的应用加载到页面选项卡上时,您将获得“页面”参数。

所以:

  1. 您的应用提供的标签页首次加载到新页面时,您可以从签名请求中检测到页面 ID。

  2. 此回调还将告诉您当前查看页面选项卡的用户是否是该页面的管理员(如果适用,这对您自己的编辑界面很有用)

  3. 如果您还没有应用程序用户告诉您他们管理哪些页面的界面,您可以通过访问其用户对象上的“帐户”属性来获取用户管理的所有页面的列表(@ Graph API 中的 987654324@)一旦您拥有 manage_pages 权限

【讨论】:

  • 谢谢,这就是我想要的。我一直在寻找页面 > 应用程序,忘记了它们成为粉丝页面上的“标签”的命名法。我已经拥有 manage_pages 权限,所以我只需要从相关页面中检索令牌(我已经知道),然后使用该令牌来请求 /PAGE_ID/tabs ,这为我提供了丰富的信息,包括我所追求的。感谢您的快速回复!
【解决方案2】:

您能否在您网站的数据库中跟踪谁拥有该应用的授权?

即从您的应用调用网站服务器上的脚本,返回用户是否已授权该应用。

【讨论】:

  • 是的,这实际上就是我在上述答案之后要实现的目标。基本上,我的网站使用 Facebook Connect(需要授权)来检索 Facebook 用户的信息以及他们的页面(使用 manage_pages 权限)。从那里,我可以使用上述海报的答案来验证他们是否安装了我的应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多