首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iframe选项卡facebook应用程序显示在新页面上,而不是在iframe/facebook-canvas中

iframe选项卡facebook应用程序显示在新页面上,而不是在iframe/facebook-canvas中
EN

Stack Overflow用户
提问于 2011-11-26 08:53:55
回答 2查看 673关注 0票数 2

我使用的是Python和一个javascript或php sdk。

要获得access_token -I,请按照文档页面(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。这是一个‘page Tab’应用程序(不是‘Facebook上的应用程序’),所以我在基本应用程序配置页面上设置了"Page Tab Name”和"Page Tab Url“。

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

我已经搜索了许多帖子/等,但没有运气,任何帮助都将非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-30 11:25:00

选项卡页应用程序未记录的步骤:

  1. 令人困惑的部分是示例中的CANVAS_PAGE_URL。这需要是web托管应用程序的URL (例如https://www.appname.appspot.com/)。这没有明确定义..
  2. 如果在signed_request上找不到access_token和user_id,则需要执行身份验证对话框(根据页面文档)。这需要通过script top.location.ref来完成,以确保它作为对话框启动。这将转到一个新页面,覆盖触发应用程序的画布(或粉丝页面)。
  3. 当用户允许应用程序的权限时,将通过选项卡页-画布-url?代码=“.....”调用应用程序。在这一点上,需要进行重定向(在任何地方都没有文档记录。我不得不查看php sdk代码来解决这个问题(fbmain.php第17行)( python和header() php中的redirect())。重定向需要获取粉丝页面上的应用程序的url:http://www.facebook.com/FAN_PAGE_NAME?sk=app_nnnnnnn

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

(给我发邮件,我很高兴分享python代码,这些代码现在都运行得很好)

票数 2
EN

Stack Overflow用户

发布于 2012-01-16 22:04:34

这在其他地方也有说明,但要明确的是:你的应用程序脱离facebook的原因是因为身份验证对话框远离了原始的apps.facebook.com url。

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

一旦授权过程完成,浏览器就会被重定向到服务器上的完全合格的应用程序url。

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

对于大多数人来说,这似乎不是一个好的“流”,但这就是现在的情况。我想可能有一种不同的途径,那就是在应用程序的“认证对话”页面上使用“认证推荐”,但还没有使用过。

我使用PHP SDK,下面是我做的事情:

当您的redirct_url在授权后被调用时,

  1. 检查请求参数"state“。有些人曾建议使用"code“参数,但我没有看到它被返回。

'‘

代码语言:javascript
复制
// 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; }

如果你知道更好的方法,请让我知道!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8275518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档