2010-07-29 133 views
4

我遇到了问题。Facebook页面上的用户标识页签(signed_request)

我有自定义页面选项卡,并查看当前用户。 我要求用户将扩展权限授予他的个人资料(使用Facebook.showPermissionDialog)。 如果他授予权限,理论上我可以访问Graph API和其他东西。 但是当我从Facebook分析新的signed_request参数,我得到oauth_token,绑定到当前页面选项卡,而不是用户配置文件。换句话说,对Graph API方法'me'的请求为我提供了自定义页面配置文件。我想获得用户的个人资料!我应该如何访问它?

如何在Facebook选项卡上访问用户的Graph API?

回答

2

选项卡比普通应用程序更有限。它不知道谁在访问它,除非他们与该选项卡交互。基本上它强调一个标签对于安装它的用户是有用的,而不是访问者。从docs

  • 它不知道浏览者是谁,当用户第一次访问的标签。 Facebook发送fb_sig_user和fb_sig_profile_user参数,它们都包含配置文件所有者的用户ID。
  • 如果查看用户与选项卡进行交互(如提交表单,采取引发新内容的AJAX加载的操作,或者跟随加载在选项卡上的相对URL),则该用户的UID将作为应用程序发送给应用程序fb_sig_user参数,配置文件所有者的用户标识将作为fb_sig_profile_user参数发送。查看用户的会话密钥是密钥,只有在用户授权该应用程序时才会发送。
  • 应用程序在所有者的应用程序选项卡上使用所有者的会话密钥。
+0

但signed_request参数的一部分在于它是为了解决这个问题。我和提问者有同样的问题,尽管听起来像他的解决方案也可以帮助我。 signed_request文档确实建议用户首先需要与应用程序交互,但这并没有说得那么清楚 - 我完全错过了,直到刚刚重新阅读。 – 2010-11-09 16:32:54

+0

只是为了让您知道,您的链接已损坏。参考:http://meta.stackexchange.com/q/101241/149820 – staticbeast 2011-08-08 22:17:12

3

我已经想清楚它是如何工作的。在用户授予权限后,当通过Ajax在我的服务器上调用页面时,Facebook发送当前用户的signed_request(以及他的ID)。当页面静态加载 - 你得到页面标签的signed_request。希望它能帮助别人。

+0

如何解析/解码负载回json对象? – cdpnet 2010-08-13 19:48:09

+0

请问您能解释一下吗?是否可以获取正在查看其他用户选项卡的用户的UID? – balepc 2010-08-17 14:40:53

+0

@cdpnet,@balepc:有关signed_request过程的文档,其中包括PHP示例代码,位于Facebook的网站http://developers.facebook.com/docs/authentication/canvas;它的实施相对简单。如果你有任何具体的问题,那么可能值得开始一个新的问题。 – 2010-11-09 16:41:40