【问题标题】:How do correctly authorise a Facebook App如何正确授权 Facebook 应用
【发布时间】:2012-08-25 01:38:14
【问题描述】:

我正在创建一个基本的 Facebook 应用,当未经许可的用户访问该应用时,他们会被重定向到授权页面。但是,该页面不显示,并且我看到以下错误。

此内容不能在框架中显示

在新窗口中打开它会显示我的应用的授权页面。单击“转到应用程序”然后将我带到应用程序,但在它自己的窗口中,远离 Facebook。现在可以返回 FB 并重新加载应用页面。

更奇怪的是,当我注销并转到我的应用页面时,我得到一个 Facebook 404 页面 (4oh4.php)。

我猜我做错了,所以有人能看出我的脚本有什么明显的问题吗?谢谢。

看看发生了什么 - http://apps.facebook.com/dyne_drewett_news/

<?php
require 'fb/facebook.php';

$fbconfig['appUrl'] = 'my-app-url';    // Create An instance of our Facebook Application.
$facebook = new Facebook(array(
    'appId'  => 'my-app-ID', // Entered correctly in actual script
    'secret' => 'me-app-secret', // Entered correctly in actual script
    'cookies' => 'true',
));

// Get the app User ID
$user = $facebook->getUser();

if($user) :
    try{       // If the user has been authenticated then proceed
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e){
        error_log($e);     
        $user = null;
    }
endif;

// If the user is authenticated then generate the variable for the logout URL
if($user) :
    $logoutUrl = $facebook->getLogoutUrl();
?>

<!-- My HTML goes here -->

<?php
else :
    $loginUrl = $facebook->getLoginUrl();
    header('Location: '.$loginUrl);
endif;
?>

【问题讨论】:

    标签: facebook-apps facebook-authentication facebook-app-requests


    【解决方案1】:

    因为您在 iframe 中工作,所以您必须执行 JavaScript 重定向。只有这样,您才能重定向最顶层的帧 -

    echo "<script language=javascript>";
    echo "top.location.href ='".$url."';";
    echo "</script>";
    exit();
    

    这是在 Facebook 应用程序中进行完整重定向的唯一方法。任何其他重定向(例如使用 PHP)只会重定向用户 iframe...

    【讨论】:

    • 谢谢。这样现在可以正确转发到 App auth 页面,但是当您单击“Go to App”时,它仍会在顶部窗口中打开 App,而不是应在框架中打开。对于尝试直接访问 APP 的未登录 FB 用户,我仍然会收到 404 错误。
    • 404 可能是因为您的应用程序处于沙盒模式。 “Go to App”按钮具体在哪里?
    • 再次感谢,404 确实是沙盒模式,所以这是一种排序。 “转到应用程序”按钮位于标准 FB 应用程序授权框上。如果您访问我原始框中的链接,您应该会看到我的意思 - 那里有一个应用程序,虽然它目前只是虚拟数据。
    • 那里出现 SSL 错误...打开一个新窗口可能相当于打开一个新标签页...这是意料之中的...
    • 好的,所以我用 `$loginUrl = $facebook->getLoginUrl(array('redirect_uri' => $fbconfig['appUrl']) );',现在我正按预期返回画布页面。我确实有问题需要解决,但这里提出的所有问题似乎都已修复,因此感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    相关资源
    最近更新 更多