2

我正在使用 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 上的应用程序”),因此在基本应用程序配置页面上设置了“页面选项卡名称”和“页面选项卡 URL”。

我还没有实现会话,我想知道是否有必要将 iframe 目标作为状态变量传递,并将它与重定向一起传递回 uri。

我搜索了很多帖子/等,但没有运气,任何帮助将不胜感激!

4

2 回答 2

2

标签页应用程序未记录的步骤:

  1. 令人困惑的部分是示例中的 CANVAS_PAGE_URL。这需要是网络托管的应用程序 URL(例如https://www.appname.appspot.com/).. 这没有明确定义..

  2. 如果在 signed_request 上找不到 access_token 和 user_id,则需要完成身份验证对话框(根据页面文档)。这需要通过脚本 top.location.ref 来完成,以忍受它作为对话框启动。这将进入一个新页面,覆盖触发应用程序的画布(或粉丝页面)。

  3. 当用户允许应用程序的权限时,应用程序通过 tab-page-canvas-url?code="....." 调用。此时,需要进行重定向(在任何地方都没有记录。我不得不查看 php sdk 代码来解决这个问题(fbmain.php 第 17 行)(python 中的 redirect() 和 header() php)。重定向需要获取粉丝页面上应用的 url:http: //www.facebook.com/FAN_PAGE_NAME?sk=app_nnnnnnn

花了很多小时的研究和挖掘来理解这一点,并希望它有所帮助(我看到很多关于页面突破 iframe/canvas 的问题),基本问题是 FB 没有在任何地方记录的额外重定向步骤。 .

(给我发邮件,我很高兴分享现在运行良好的 python 代码)

于 2011-11-30T03:24:59.850 回答
0

它在别处有说明,但要明确一点:您的应用程序脱离 facebook 的原因是因为身份验证对话框远离了原始的 apps.facebook.com url。

这可能只发生在扩展权限的情况下,因为新权限屏幕是两页而不是一页。

授权过程完成后,浏览器将重定向到服务器上的完全限定应用 URL。

“修复”是使用它的http://apps.facebook.com/appname地址将浏览器发送回 Facebook 应用程序。

[对大多数人来说,这似乎不是很好的“流动”,但现在就是这样。我认为通过在应用程序的“Auth Dialog”页面上使用“Authenticated Referrals”可能会有不同的路线,但尚未使用它]

我使用 PHP SDK,这就是我所做的:

  1. 在授权后调用 redirct_url 时检查“state”请求参数。有些人建议使用“code”参数,但我没有看到它被返回。

''

// after completing the first authorization, the redirect url may send users away from Facebook to the redirect url itself.    
//This php code redirects them back to the app page

if (isset($_GET['state'])){ header("Location: http://apps.facebook.com/appname']); exit; }

如果您知道更好的方法,请告诉我!

于 2012-01-16T14:04:33.933 回答