Facebook PHP SDK:发布对象/操作


Facebook PHP SDK: Post object / action

我想知道是否有人能帮我。

我试图使用PHP SDK发布操作,但在发出请求后,它似乎不会返回对象,也不会用该操作更新用户配置文件的活动部分。我在JS中做得很好,但似乎无法将其转移到php。

// include the FB SDK
require_once(APPLICATION_PATH . '/../library/facebook/facebook.php');
// create the application instance
$facebook = new Facebook(array(
    'appId'  => $this->facebookConfig->appid,
    'secret' => $this->facebookConfig->appsecret,
    'cookie' => true
));
// get the user id
$user = $facebook->getUser();
if(!empty($user)) {
    // We have a user ID, so probably a logged in user.
    // If not, we'll get an exception, which we handle below.
    try {
        // post og actions
        if(!empty($this->thanksData->ogobject) && !empty($this->thanksData->ogaction)){
            $method = '/me/' . $this->appData->namespace . ':' . $this->thanksData->ogaction;
            $params = array(
                        $this->thanksData->ogobject => 'http://mydomain.com/thanks', 
                        //'access_token' => $this->fbAuthToken
                    );
            $ret_obj = $facebook->api($method, 'POST', $params);
        }
        // wall post
        if(!empty($this->facebookConfig->wallmsg))
            $this->wallPost($facebook);
    } catch(FacebookApiException $e) {
        // If the user is logged out, you can have a 
        // user ID even though the access token is invalid.
        // In this case, we'll get an exception, so we'll
        // just ask the user to login again here.
        $params = array(
            'scope'         => $this->permissions,
            'redirect_uri'  => $this->facebookConfig->applink
        );
        $loginUrl = $facebook->getLoginUrl($params);
        // log errors
        error_log($e->getType());
        error_log($e->getMessage());
        // redirect if not logged in or not enough permissions
        //echo "<script>top.location='"".$loginUrl."'";</script>";die;
    }
    // Give the user a logout link 
    //echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';
}

JS中的相同示例在我删除它以支持在PHP 中执行任务之前,这段代码一直在工作

// initialise facebook
window.fbAsyncInit = function() {
    // get the data
    var data = $('body').data();
    FB.init({
        appId   : data.appid, // App ID
        status  : true, // check login status
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true, // parse XFBML
        oauth   : true  // oauth stuff
    });
    // enable actions on page visit
    if(data.object.length > 0 && data.action.length > 0){
        // check if we have permissions
        FB.login(function(loginResponse){
            FB.api('me/permissions','get',function(response){
                // get the data
                var data = $('body').data();
                if(data.ogactions == 1){
                    var params = {};
                    params[data.object] = data.url;
                    // post that we read the article
                    FB.api(
                        '/me/'+ data.appnamespace + ':' + data.action,
                        'post',
                        params,
                        function(response) {
                            if (!response || response.error) {
                                console.log(response);
                            } else {
                                console.log('Action successful! Action ID: ' + response.id);
                            }
                    });
                }
            });
        }, {scope: 'publish_actions,publish_stream'});
    }
}

这是一个相当愚蠢的错误,我在头中的og元字段有name="而不是property=",这是我没有注意到的。