测试期间Facebook访问令牌

时间:2012-10-23 12:52:11

标签: php facebook

我在测试时遇到了这个问题。

在我的应用中,用户点击一个链接,让他们登录并为我的应用授予权限。

问题是,在我成功完成一次之后,我不能轻易再做一次。我对Facebook对象中的用户的检查返回有用户,但访问令牌无效。我收到以下错误:

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /home/kleelof/public_html/projects/tutor_chapter/facebook_login/facebook/base_facebook.php on line 1028

以下是我的一些代码:

The variable $fb is set to the Facebook object before the following code is executed. .

     $user = $fb->getUser();    
     if ($user)
    {
        // get coupon code
        $coupon_code = file_get_contents(CODE_URL . "/facebookcoupon.php?email=$user_email");

        // check that the user has given the app permission to post on their wall.
        //try
        //{
            $permissions = $FB->api("/me/permissions");

            if (array_key_exists('publish_stream', $permissions['data'][0])) 
            {
                // build attachment
                $attachment = array(
                                    'name' => $site_name,
                                    'link' => urlencode(BASE_URL . str_replace('%code%', $coupon_code, $claim_link)),
                                    'picture' => $image_link,
                                    'description' => str_replace('%code%', $coupon_code, $description),
                                    'access_token' => $FB->getAccessToken()
                                    );

                $FB->api('/me/feed/', 'post', $attachment);

                $exit_to .= "?ce=The coupon has been posted on your Facebook timeline";
            }
            else
            {
                $exit_to .= "?ce=Unable to post the coupon";
            }
        //}catch (Exception $e) 
        //{
            /*$exit_to = $FB->getLoginUrl(  
                                    array(
                                            'scope' => FB_LOGIN_SCOPE
                                            )
                                    );
        }*/
    }
    else
    {//echo("no user");
        $exit_to = $FB->getLoginUrl(    
                                    array(
                                            'scope' => FB_LOGIN_SCOPE
                                            )
                                    );
    }

你可以看到我试图抓住我上面提到的错误并将它们发送回登录,但是它只是被一个循环转到FB并被返回。

有没有人在逻辑中看到一些不正确的东西?

有没有更好的方法来处理异常?也许我可以做些什么来取消$ user。

小心, 利

0 个答案:

没有答案