【发布时间】:2012-01-06 17:05:50
【问题描述】:
我正在使用 Python 和一个 javascript 或 php sdk。
要获取 access_token - 我按照文档页面 (https://developers.facebook.com/docs/authentication/) 上指示的步骤进行操作。我将重定向 url 传递给 dialog/oauth 并获得了 access_token。完成此操作后,发送回浏览器的所有输出 html 都会呈现到新页面,留下 facebook iframe/canvas。 (仅供参考,所有输出都是通过通常的“self.response.out.write”函数调用完成的)。
似乎 PHP sdk 隐藏了这一点,我找不到方法来获取:http://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s" 对话框以将重定向 url 的输出发送到触发应用程序的 iframe/canvas。这是一个“页面选项卡”应用程序(不是“Facebook 上的应用程序”),因此在基本应用程序配置页面上设置了“页面标签名称”和“页面标签网址”。
我还没有实现会话,我想知道是否有必要将 iframe 目标作为状态变量传递,并将其与重定向一起传递回 uri。
我搜索了很多帖子/等,但没有运气,任何帮助将不胜感激!
【问题讨论】:
-
经过更多研究 - facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s 被重定向到增强的权限对话框(请参阅博客 developers.facebook.com/blog/post/378)。这可能会强制对话框显示为新页面,而不是启动应用程序的原始 fb iframe/canvas 上的新对话框。因此,来自此处的重定向将转到 FB 画布之外的新页面。有一种方法可以禁用增强的权限对话框,但我无法阻止权限对话框出现。继续为此奋斗..欢迎任何帮助。
-
终于在查看了 php sdk 之后 - 在 FB 页面上发现了这个严重未记录的问题。 /* * 如果用户第一次验证应用程序 facebook * 将用户重定向到 baseUrl,所以我检查是否有任何代码通过 * 然后将他重定向到应用程序 url * -mahmud */ if (isset($_GET['code'])) { header("位置:" . $fbconfig['appBaseUrl']);出口; } //~~ 基本上你必须做一个重定向或标题到原始粉丝页面并再次触发应用程序。这会调用带有 signed_request 和必要数据的 url 以继续前进。
-
现在,我很难让它在生产中工作(它与 local:8080 一起工作,但是一旦在网络上,fb 不会在重定向后发送 sign_request(标头调用))。 . 继续研究。将详细发布所有调查结果..
标签: python google-app-engine facebook-graph-api access-token facebook-oauth