Facebook上的访问令牌无效 - 即使在制作之后也是如此

时间:2012-08-08 23:38:16

标签: php facebook-graph-api

我正在使用facebook SDK在PHP中编写一个facebook应用程序 我的代码中的重要部分是:

    $facebook = new Facebook(array(
                'appId' => $ApplicationID,
                'secret' => $ApplicationSecret,
                'cookie' => true, // enable optional cookie support  
            ));
    $user = $facebook->getUser();

              $post = $facebook->api('/' . $user . '/feed', 'post', array(
              stuff
      ));
                $_SESSION['finish'] = false;
                $_SESSION['inside'] = 'yes';
                $_SESSION['uid'] = $user;
                $token = $facebook->getAccessToken();
                echo 'Access token: ' .$token;
                $_SESSION['friends'] = $facebook->api('/me/friends?access_token'.$token);

您可以看到我echo访问令牌 起初,我还没有将access_token添加到查询中 - 我只是将其添加进行检查 问题是最后一个(使用/me/friends/)会引发异常:

OAuthException: An active access token must be used to query information about the current user.

虽然我登录了,feed post 做了工作(我在墙上查了一下,就在那里)。然后,我的try catch块通过重定向到登录链接来处理异常,这样:

catch(Exception $e) {

            $login_url_params = array(
            'scope' => 'stuff',
            'fbconnect' => 1,
            'redirect_uri' => $ApplicationURL
        );
        $login_url = $facebook->getLoginUrl($login_url_params);

        //redirect to the login URL on facebook
        echo ("EXCPETION! " . $e . "<script> top.location.href='" . $login_url . "'</script>");
        exit();
        }

编写异常的代码显然仅用于调试目的 好吧,第一次运行应用程序时,类似的代码由if(!$user)条件执行。然后它要求我的许可,我给它。然后,再说一遍,它说访问令牌是无效的(但会发布到我的墙上) 请注意我已经比较了access_tokens,甚至在删除应用程序并再次执行之后 - 它保持不变。

这是非常尴尬的行为,我无法理解。请问有人请光明一点吗?
编辑:出于某种奇怪的原因,即使转到其他用户,令牌也不会改变。但是墙上的帖子仍然是......(以及访问好友列表时抛出的异常)

1 个答案:

答案 0 :(得分:1)

  

出于某种奇怪的原因,即使转到其他用户,令牌也不会改变。但是墙上的帖子仍然是......(以及访问好友列表时抛出的异常)

听起来好像你实际上没有用户当前登录,因此SDK只是使用你的 app 访问令牌,它始终是它之前使用的默认令牌收到另一个更“具体”的。

您的访问令牌具有哪种格式 - 看起来像your_app_id|your_app_secret还是your_app_id|some_random_characters?如果使用您的应用ID启动,则最明确的是 app 访问令牌。