Facebook PHP SDK:发布对象/动作

时间:2012-09-12 10:48:42

标签: php facebook facebook-graph-api facebook-php-sdk

我想知道是否有人可以帮助我。

我正在尝试使用PHP SDK发布操作,但它似乎在请求发出后没有返回对象,也没有使用操作更新用户配置文件的activity部分。我在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'});

    }
}

1 个答案:

答案 0 :(得分:1)

这是一个相当愚蠢的错误,我脑中的og元字段名称=“”而不是property =“”,这是我没有注意到的。