2012-11-07 47 views
0

我有一个使用PHP SDK的Facebook应用程序。这一切都工作正常,除了当用户访问它在移动设备上(通过访问apps.facebook.com/myappname/使用他们的网络浏览器),登录陷入了一个无限的重定向循环(大概不断地将它们重定向回Facebook登录页面)。仅在移动设备上验证应用程序失败

登录代码是非常标准:

$userID = $facebook->getUser(); 
if ($userID) { 
    [store stuff in session] 

} else { 
    [Javascript redirect to $facebook->getLoginUrl()] 
} 

这是工作前,但必须被打破与Facebook的最近的变化之一。

+0

您是否尝试更改用户代理来测试您的理论并确认发送和接收的标头? – David

+0

如果我使用移动用户代理,我可以重复该问题。 Facebook使用查询字符串中的代码参数正确地重定向,但getUser()调用返回null,因此登录部分失败。尽管如此,仍然适用于台式机。 –

+0

管理修复它(当您可以调试时更容易!) - 感谢指出我在正确的方向。 –

回答

0

在这里回答我自己的问题。看起来Facebook不再发送signed_request POST数据与移动设备,这就是为什么我的登录代码不像以前那样工作。另外,成功登录后,我重定向到apps.facebook.com/myappname(为了将应用程序保留在Facebook iframe中),但这导致登录过程在移动设备上循环。

我的修复方法是更改​​应用设置中的移动网址以包含查询字符串参数,以便区分来自移动/桌面的登录后请求。对于正常请求,我重定向到apps.facebook.com/myappname。对于移动的我不知道。所以移动设备不再位于Facebook iframe中,但实际上这种方式更好。

相关问题