我正在使用Python和javascript或php sdk。
要获取access_token,请按照文档页面(https://developers.facebook.com/docs/authentication/)上指示的步骤操作。我将重定向url传递给dialog / oauth并获取access_token。完成此操作后,发送回浏览器的所有输出html将呈现到新页面,留下facebook iframe / canvas。 (fyi,所有输出都是通过通常的'self.response.out.write'函数调用完成的。)
似乎PHP sdk隐藏了这个,我无法找到一种方法来获取:http://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s“对话框,将重定向网址的输出发送到触发应用程序的iframe / canvas。这是一个'页面Tab'应用(不是'Facebook上的应用')所以在基本应用配置页面上设置了“页面选项卡名称”和“页面选项卡URL”。
我还没有实现会话,我想知道是否有必要将iframe目标作为状态变量传递,并将其与重定向一起传回uri。
我搜索了很多帖子/等等,没有运气,任何帮助都会非常感激!!
答案 0 :(得分:2)
标签页应用程序未记录的步骤:
令人困惑的部分是示例中的CANVAS_PAGE_URL。这需要是网络托管的应用网址(例如https://www.appname.appspot.com/)..这没有明确定义..
如果在signed_request上找不到access_token和user_id,则需要执行auth对话框(根据页面文档)。这需要通过脚本top.location.ref来完成,以确保它作为对话框启动。这将转到覆盖触发应用程序的画布(或粉丝页面)的新页面。
当用户允许应用程序的权限时,应用程序通过tab-page-canvas-url?code =“.....”进行调用。此时,需要进行重定向(在任何地方都没有记录。我不得不查看php sdk代码来解决这个问题(fbmain.php第17行)(python和header()php中的redirect())。重定向需要在粉丝页面上获取应用的网址:http://www.facebook.com/FAN_PAGE_NAME?sk=app_nnnnnnn
需要花费数小时的研究和挖掘来理解这一点并希望它有所帮助(我看到围绕iframe / canvas的页面突然出现了很多问题)并且基本问题是FB没有记录的额外重定向步骤任何地方...
(给我发邮件,我很乐意分享现在一切正常的python代码)
答案 1 :(得分:0)
其他地方已经说明了,但要说清楚:你的应用程序突破facebook的原因是因为身份验证对话框远离了原来的apps.facebook.com网址。
这可能仅在扩展权限时发生,因为新权限屏幕是两页而不是一页。
授权过程完成后,浏览器将重定向到服务器上的完全限定的应用程序网址。
“修复”是使用http://apps.facebook.com/appname地址将浏览器发送回Facebook应用程序。
[这对大多数人来说似乎不太好“流动”,但现在就是这样。我认为在应用程序的“Auth Dialog”页面上使用“Authenticated Referrals”可能会有不同的路径,但尚未使用它。
我使用PHP SDK,这就是我的工作:
''
// 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; }
如果你知道更好的方法,请告诉我!