【问题标题】:Facebook invalid access token after clearing cache&cookiesFacebook 清除缓存和 cookie 后访问令牌无效
【发布时间】:2012-10-15 18:06:21
【问题描述】:

我的应用未加载,在这两种情况下我得到以下错误:

a) 我在清除缓存和 cookie 后,或从我以前未使用过的 PC 上使用任何浏览器第一次访问我的应用程序时。

b) 当用户 A 尝试在用户 B 从应用程序(和 Facebook)注销后直接从同一 PC 和浏览器访问应用程序时,不清除缓存或 cookie。

但是,当我按 F5 更新网页时,它工作正常。

这是我在日志文件中遇到的错误:

{"readyState":4,"responseText":"Invalid access token","status":200,"statusText":"OK"}

用户验证码:

require_once(dirname(__DIR__).'/lib/common/AppInfo.php');
require_once(dirname(__DIR__).'/sdk/src/facebook.php');
require_once(dirname(__DIR__).'/lib/logic/UsersLogic.php');
require_once(dirname(__DIR__).'/lib/common/Log.php');

if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
    header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit();
}

try {
    $facebook = new Facebook(array(
            'appId'  => AppInfo::appID(),
            'secret' => AppInfo::appSecret(),
    ));
    $user_id = $facebook->getUser();
} catch (Exception $e) {
    exit("Error getting facebook data");
}

if ($user_id) {
    try {
        $basic = $facebook->api('/me');
    } 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");
}

任何想法为什么会发生?也许我应该强制请求一个新的用户访问令牌? (如何)

谢谢

【问题讨论】:

    标签: facebook facebook-graph-api browser access-token facebook-access-token


    【解决方案1】:

    这是完全可以预料的——在第一种情况下,没有 cookie,不知道用户是谁,因此无法获取有效的访问令牌,在第二种情况下,从 Facebook 注销(或取消对您的应用的授权)将导致您必须失效的任何访问令牌。

    但是那个错误,是来自客户端代码,对吧? 在这种情况下,您需要使用 FB.getLoginStatus 或类似名称包装您正在使用的代码,这样您就不会运行它,除非您确实拥有所需的访问令牌。

    【讨论】:

    • 谢谢!您的意思是在 TRY 之前添加这些行吗? FB.getLoginStatus(function(response) { if (response.session) {
    • @arturo,我认为你最好重新审视服务器端代码和客户端代码的分离。
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多