2012-08-08 93 views
1

后。
在我的代码中重要的部分是:
访问令牌是无效的 - 我在写与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

由于一些奇怪的原因,即使转到不同的用户后令牌不会更改。但在墙上后依然取得了...(和访问好友列表时抛出的异常)

这听起来对我来说,就好像你实际上并没有当前登录的用户,所以SDK只是使用您的应用访问令牌,它始终是它在接收另一个更“特定”之前使用的默认令牌。

您的访问令牌有什么格式 - 确实看起来像your_app_id|your_app_secretyour_app_id|some_random_characters?如果是开始与应用ID,这是最明确的应用访问令牌。

+0

是的,你是对的。这是应用程序访问令牌。为什么不是使用用户访问令牌的应用程序?我*我*登录到Facebook,我确实授予了权限...注:它现在工作了一段时间。它没有理由就停了。 – 2012-08-09 12:50:54

+0

并且'$ user'是当前的用户ID ... – 2012-08-09 13:15:06

+0

尝试从https://www.facebook.com/settings?tab=applications下的用户帐户设置中删除您的应用程序,然后再次通过登录 - 执行它事后工作? – CBroe 2012-08-09 13:22:29

相关问题