2

我正在使用Python和JavaScript或PHP sdk。iframe选项卡facebook应用程序显示在新页面而不是iframe/facebook-canvas

要获取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“对话框将重定向url的输出发送到触发应用程序的iframe/canvas。这是一个'Page Tab'应用程序(不是'Facebook上的应用'),所以在基本应用配置页面上设置了“页面标签名称”和“页面标签URL”。通过IFRAME目标作为状态变量,并将其传递回重定向​​到URI。

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

+0

一些调查研究后 - http://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s被重定向到一个增强的权限对话框(见博客http://developers.facebook.com/blog /后/ 378 /)。这可能会迫使对话框显示为新页面,而不是启动应用程序的原始fb iframe/canvas上的新对话框。因此,来自这里的重定向将进入FB画布之外的新页面。有一种方法可以禁用增强的权限对话框,但我无法停止显示权限对话框。继续努力与此..任何帮助欢迎。 – user1055761

+0

终于在看到php sdk后 - 在FB页面上找出了这个没有记录的严重问题。/* *如果用户第一次认证应用Facebook *重定向用户的baseUrl,所以我检查,如果任何代码通过 *然后重定向他的应用程序URL * -mahmud */ 如果(isset($ _ GET [ 'code'])){ header(“Location:”。$ fbconfig ['appBaseUrl']); 退出; } // ~~基本上你必须做一个重定向或标题的原始粉丝页,并再次触发应用程序。这通过signed_request和必要的数据向前移动来调用url。 – user1055761

+0

现在,我很难得到这个工作生产(它与本地工作:8080,但是一旦在网络上,fb不会在重定向(标头调用)后发送sign_request)..继续研究。将详细发布所有调查结果.. – user1055761

回答

2

标签页应用无证步骤:

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

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

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

花的研究和挖掘许多时间来了解这一点,并希望它可以帮助(我看到了很多的问题,围绕页面打破了上调在iframe /月)和基本的问题是多余的重定向的步骤,FB没有任何地方记录......

(mail给我,我很高兴与大家分享Python代码,现在是所有工作的很好)

0

在其他地方声明,但要说清楚:您的应用程序从Facebook中脱离出来的原因是因为身份验证对话框远离原始apps.facebook.com网址。

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

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

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

[似乎并不像好“流”对大多数人来说,那不过是它是如何现在。我认为在应用的“Auth Dialog”页面上使用“Authenticated Referrals”可能会有不同的路由,但尚未使用它]

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

  1. 当授权后调用redirct_url时,请检查“状态”请求参数。有些人建议使用“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; } 

如果你知道一个更好的办法,请让我知道!

相关问题