2

我正在登录并从 facebook 获取相册:

1)这里,首先函数$facebook->getUser()返回0

2)如果我注释了其余的代码,即if/else条件,那么它会进入 catch 块并显示异常,例如:

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

3)我在stackoverflow和google上发现了很多关于这个的帖子,几乎所有的都试过了,但仍然没有用。这就是我在这里分享代码的原因。

4)我还创建了新的应用程序 facebook 并尝试了它,但问题仍然存在。

以下是我的代码:

public function facebookapiAction() {
        require 'auth/src/facebook.php';
        $facebook = new Facebook(array(
                    'appId' => '3xxxxxxxxxxxxxxxxxxxx7',
                    'secret' => '6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5',
                    'cookie' => true,                    
                ));
        return $facebook;
    }

    public function facebookalbumAction() {
        $session = new Zend_Session_Namespace('user');
        $facebook = $this->facebookapiAction();
        $access_token = $facebook->getAccessToken();
        $facebook->setAccessToken($access_token);
        $user = $facebook->getUser();
        $albumid = $this->_getParam('albumid');
        if ($user <> '0' && $user <> '') {
            if ($albumid != "") {
                $photos = $this->albumlistAction($albumid, $facebook);                
            } else {
                try {
                    $albumArrInfo = array();
                    $user_profile = $facebook->api('/me/albums');                                       
                } catch (FacebookApiException $e) {
                    error_log($e);
                    exit;
                }
            }
            $session->fb_logout = $facebook->getLogoutUrl(array('next' => "http://{$_SERVER['HTTP_HOST']}/register/logout/id/Logout"));
            $session->isfb = 1;
        } else {
            if (isset($_REQUEST['getfurl']) && !(isset($_REQUEST['state']))) {                
                $loginUrl = $facebook->getLoginUrl(array('display' => 'popup','scope' => 'manage_pages,user_events,email,read_stream,user_photos,offline_access'));
                echo $loginUrl;
                exit;
            }
        }
    }

    public function albumlistAction($albumid, $facebook) {
        $photos = $facebook->api("/{$albumid}/photos");
        $albumArr = array();
        $albumArrInfo = array();
        foreach ($photos['data'] as $photo) {
            $albumArr['id'] = $photo['id'];
            $albumArr['name'] = $photo['name'];            
        }        
        return $albumArr;
    }

这段代码有什么问题。

需要帮忙。

4

2 回答 2

2

听起来像我面临的类似问题。错误报告在这里:http: //developers.facebook.com/bugs/238039849657148

尝试更新到最新版本的 PHP-SDK (3.2.2)。

于 2012-12-07T03:56:26.397 回答
0

尝试这个:

$user = $facebook->getUser();
...
$user_profile = $facebook->api('/'.$user.'/albums'); 
于 2012-12-06T21:23:28.133 回答