Facebook应用不会重定向移动网站URL



在我的应用程序设置上,我作为移动URL所拥有的一个:

https://example.herokuapp.com/mobile.php#&ui-state=dialog

但是,当我尝试使用智能手机从Facebook访问该应用时,Facebook将其重定向到Oauth URL,以毫秒几毫秒,然后将其重定向到:

https://example.herokuapp.com/?state=63903485c518f2ae5deca667b9a............#_=_

由于丢失了/mobile.php,因此加载了桌面版本。

我该如何解决?任何建议都非常感谢。

非常感谢

编辑:安全码

try {
    $facebook = new Facebook(array(
            'appId'  => AppInfo::appID(),
            'secret' => AppInfo::appSecret(),
    ));
    $access_token=$_GET['access_token'];
    Log::debug("BaseControl:access token: ". $access_token);
    if(isset($access_token)){
        $facebook->setAccessToken($access_token);
    }
    $user_id = $facebook->getUser();
} catch (Exception $e) {
    exit("Error getting facebook data");
}
if ($user_id) {
    try {
        $basic = $facebook->api('/me');//se necesita access token, si no se tiene falla
    } catch (FacebookApiException $e) {
        if (!$facebook->getUser()) {
            exit("Invalid access token");
        }
    }
    if($basic==null){
        exit("Application not installed");
    }
    $user=UsersLogic::getUser($user_id);
    if($user==null){
        exit("User not registered in database");
    }
}
else{
    exit("No user logged");
}

arturo,我会仔细检查您的仪表板设置是否正确。确保"具有Facebook登录的网站"部分具有正确的URL,在您的情况下是移动设备。当您徘徊在[?]上时,该工具提示说"为您的网站url。出于安全原因,我们只会重定向到此URL"。因此,为了具有正确的重定向URL,您需要确保该字段中的URL是您希望用户重定向到的URL。

正如它所说,Facebook仅出于安全目的重定向到该URL,因此,如果您有应用程序的桌面和移动版本,则需要一个端点来处理重定向以将用户发送到正确的页面。对于您的情况,重定向URL似乎是到您的根页面。然后,您应该做的是在根页面中拥有一些逻辑,以检查传入请求的用户代理并适当路由。我将查看http://detectmobilebrowsers.com/以获取开源代码段以检测移动浏览器。您应该将根页URL放在第一个字段中,然后将移动版本放在第二个字段中。

让我知道是否有帮助。

虽然这没有解决问题的核心,但如果您没有得到任何其他答复,我确实可以尝试一个想法:

在您的应用程序的桌面版本的索引页面上,您可以检查用户代理以测试它是否是移动设备。如果是这样,您可以将重定向到您的Mobile.php页。

用户代理嗅探是始终一个坏主意。在应用程序的输入点中,您应该通过检查用户通过Facebook中的页面选项卡(即桌面用户)加载应用程序的"签名请求"变量来确定其是否是桌面或移动设备。如果用户在Facebook以外的移动设备上访问该应用程序,则不会发送此变量。

php:

if(isset($_REQUEST['signed_request']))
    //load desktop version
else
    //load mobile version

最新更新