【问题标题】:Facebook Error validating access token: Session has expired at unix timeFacebook 验证访问令牌时出错:会话已在 unix 时间过期
【发布时间】:2016-11-30 20:41:38
【问题描述】:

我已经为我的网站用户集成了离线墙贴,这些用户已经将他们的 FB 帐户与那里的用户详细信息相关联。我已将 FB-id、FB-Access 令牌存储在我的数据库中,并通过使用 PHP-SDK 库,我已将提要墙发布在网站中。一切都很好,所有用户都在 Facebook 墙上收到了消息。但是今天所有的事情都白费了,因为它抛出了各种错误。我一直在搜索更多文档,但找不到此问题的确切相关解决方案。

我用于 FB-Wall 发布的代码行

             $usid=$pageinfo['user']['id_facebook'];
    $accestoken=$pageinfo['user']["facebook_accesstoken"];

        if($pageinfo['user']['user_fbtoken']=='1')

         $attachment =  array(
        'access_token' => $accestoken,
        'message' => "myTaste || real restaurant reviews, share your taste on myTaste",
        'name' => "My Favorite Restaurant is ".$business['name'].$business['location']['city']."-What is yours? ",
        'link' => $business['personal_url'],
        'description' => "", 
        'picture'=> "http://googima.com/images/mysite.gif"
        );  

        $facebook->api("/".$usid."/feed", "post",$attachment); 
    }

错误信息:

 Uncaught OAuthException: Error validating access token: Session has expired at unix time

 Uncaught OAuthException: (#210) User not visible thrown in /hsphere/local/home/mysite.com/include/3rdparty/facebook-php-sdk/src/facebook.php

做这个离线墙贴的主要想法是用户不会每次在网站上做一些评论时都要求登录 FB。它需要使用我们存储在用户表中的 FB 详细信息自动发布。

【问题讨论】:

  • @ifaour:我的做法与您在之前的论坛回复中提到的方式相同,例如 EDIT:4,EDIT2。我昨天得到了结果,一切都很好,但是今天它抛出了以下错误。
  • 对不起!我以为你在取回一些东西!发帖不需要offline_access 权限。 publish_stream 就是您所需要的,然后只需从您的数组中删除 access_token
  • @ifaour:我已经从数组列表中删除了访问令牌,到目前为止一切正常。我希望这肯定会起作用,让我明天在工作中再次检查它。真的我非常感谢您的想法和评估。您总是在 FB API 中摇摆不定。
  • 对于像我这样的其他人 - 直接的答案是使用 app_access_token 而不是 user_access_token ,这是获取 app_access_token 的方法 -developers.facebook.com/docs/opengraph/howtos/…

标签: php facebook


【解决方案1】:

一旦您授予publish_stream 权限,就不需要access_token。因此,即使没有有效的会话(只是一个例子),删除它并使用类似的东西也可以工作:

$params =  array(
    'message' => "Test Message",
    'picture'=> "http://path/to/image.jpg"
);  
$post_id = $facebook->api("/$uid/feed", "post",$params);

有关更多信息,请参阅answer(编辑 4)。顺便说一句,感谢@zerkms 提供此信息!

【讨论】:

  • @ifaour:当我今天早上检查此功能时,它现在仍然在服务器中引发其他错误。
  • @ifaour:今天早上我检查了功能,仍然显示以下错误代码集。致命错误:未捕获的 OAuthException:(#210)用户不可见抛出 /hsphere/local/home/mysite.com/include/3rdparty/facebook-php-sdk/src/facebook.php 在第 543 行
  • @ifaour:我对提要帖子比较担心,因为今天我的网站出现了其他错误。当用户使用他的登录详细信息登录系统时,他可以发布评论并返回FB 墙贴正在正确进行。有时,假设在 4hr 或 5hr 之后,同一用户尝试发布一些评论,然后它拒绝错误,如下所示致命错误:Uncaught OAuthException: (#210) User not visible throw in /hsphere/local/home/ mysite.com/facebook-php-sdk/src/facebook.php 在第 543 行。所以,请让我知道我们是否需要离线访问
  • @Anandhan:我快速搜索了这个错误,找到了this,它可能会对你有所帮助。此外,如果您要附加用户的 access_token,我建议您删除它。
  • @ifaour:我已经从数组中删除了访问令牌,但它仍然显示用户不可见抛出的错误。让我解释一下发生了什么,如果 x 使用用户详细信息登录网站并链接了 (FB acount detail(test1),另一方面,浏览器有其他选项卡,此时登录了其他一些 FB 帐户 (test2)如果我网站上的用户提交评论,则会引发以下错误,因为用户可见并且还有一些异常。请指导我克服这个问题。
【解决方案2】:

访问令牌在 facebook oauth 实施中不是永久性的。您需要在工作会话开始时更新它

更多详情请访问:http://developers.facebook.com/docs/authentication/

【讨论】:

  • 感谢您的回复。我不是每次都使用 FB 登录,让用户在 FBwall 中发布评论,所以我没有办法随时重置会话。还有其他方法可以让它无限期到期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2012-01-19
相关资源
最近更新 更多