Facebook应用程序不会重定向移动网站网址

Art*_*uro 3 mobile jquery facebook facebook-graph-api facebook-authentication

在我的应用设置上,我将此作为移动网址:

https://example.herokuapp.com/mobile.php#&ui-state=dialog
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用智能手机从Facebook访问应用程序时,Facebook会重定向到OAuth URL几毫秒,然后重定向到:

https://example.herokuapp.com/?state=63903485c518f2ae5deca667b9a............#_=_
Run Code Online (Sandbox Code Playgroud)

由于/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");
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*hen 5

阿图罗,我会仔细检查你的仪表板设置是否正确.确保"具有Facebook登录的网站"部分具有正确的URL,在您的情况下,是移动的URL.当您将鼠标悬停在[?]上时,工具提示会显示"您网站的网址.出于安全原因,我们只会重定向到此网址".因此,为了获得正确的重定向URL,您需要确保该字段中的URL是您希望用户重定向到的URL.

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

如果有帮助,请告诉我.

  • 是的,这是一个不正确的假设.Canvas URL适用于在Facebook上托管的应用.您必须使用具有Facebook登录字段的网站而不是画布网址 (2认同)