自动发布到我自己的fb粉丝页面 - 致命错误:未捕获的OAuthException:

时间:2014-02-24 17:06:20

标签: php facebook facebook-graph-api

我已经阅读了与此主题相关的堆栈上的每个帖子,但似乎没有任何效果。

我在fb开发者页面上使用了获取访问令牌按钮的图表浏览器,(确保选择所需的参数 - user_likes,publish_actions,email,offline_access,publish_stream,manage_pages)然后用它来创建一个具有以下链接的长期访问令牌:插入/替换

<MYAPPID>,<MYSECRETID>,<SHORT_TERM_TOKEN>

真实的东西:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=<MYAPPID>&client_secret=<MYSECRETID>&fb_exchange_token=<SHORT_TERM_TOKEN>

得到我的<TWO_MONTH_TOKEN>

现在尝试实现代码:

require "fb_src/facebook.php";


    $config = array('appId' => '<MYAPPID>','secret' => '<MYSECRETID>');

    $params = array('scope'=>'user_likes,publish_actions,email,offline_access,publish_stream,manage_pages');
    $facebook = new Facebook($config);
    $user = $facebook->getUser();

    if($facebook->getUser()) {
    try {

        $user_profile = $facebook->api('/me');
        $access_token = $facebook->getAccessToken();

      } catch(FacebookApiException $e) {
                        $login_url = $facebook->getLoginUrl($params);
                        error_log($e->getType());
                        error_log($e->getMessage());
      }   
    } else {
        $login_url = $facebook->getLoginUrl($params);

    }    

$page_id = "<MY_FANPAGE_ID>";
            $page_access_token = "";
            $result = $facebook->api("/me/accounts");
            foreach($result["data"] as $page) {
                if($page["id"] == $page_id) {
                $page_access_token = $page["access_token"];
                //echo '<br>';
                //echo "2. ".$page_access_token;
                break;
                    }
                }


        $args = array(
            'access_token'  => '<TWO_MONTH_TOKEN>',
            'message'       => "my short message",
            'name' => "name of post",
            'link' => "http://example.com/",
            'picture' => "http://example.com/images/fbobimgSV403.jpg",
            'actions' => array(
            'name' => 'page name',
            'link' => "http://example.com/page_name"
            )

        );
       $post = $facebook->api("/$page_id/feed","post",$args);

真正让我感到震惊的是,这个确切的代码在今天凌晨2点工作了大约20次,同时测试了它。然后它在我退出时停止,看看我是否可以在没有登录的情况下让它工作。我再次登录并重复这个过程无济于事。访问令牌仍然有效期为2个月。 (是的,我已经尝试清除缓存并删除co​​okie。)

我收到此错误:

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /public_html/facebook/fb_src/base_facebook.php on line 1249 

我也应该指出$user = $facebook->getUser();每次都会返回0。

我希望有人成功地做到了这一点,并且可以引导我朝着正确的方向前进。谢谢!

0 个答案:

没有答案
相关问题