Перенесено в Facebook Graph API - приложение сломано - не может опубликовать сообщение на стене - PullRequest
0 голосов
/ 30 июня 2010

Вчера я изменил настройки приложения и включил «Новые разрешения на доступ к данным» и «Новые SDK».

После этого перестала работать функция отправки сообщений на стену пользователей.На моем сайте пользователи входят через Facebook API (Graph) и могут публиковать сообщения на своей стене.

Это мой старый код, который работал нормально:

function publish_with_permission(permission,action_links,attachment) {
  FB.ensureInit(function() {
    FB.Connect.requireSession(function(){
        //check is user already granted for this permission or not
        FB.Facebook.apiClient.users_hasAppPermission(permission,
        function(result) {
            // prompt offline permission
            if (result == 0) {
                // show the facebook permission dialog
                FB.Connect.showPermissionDialog(permission,
                function(result){
                    if (!result) {
                       FB.Connect.streamPublish('', attachment, action_links, null, "Post this:", jscallback);
                    } else {
                    // permission granted, post without facebook dialog
                       FB.Connect.forceSessionRefresh(function() {
                       FB.Connect.streamPublish('', attachment, action_links, null, "Post this:", jscallback,true);
                    });
                }
            }, true, null);
        } else {
            // permission already granted, post suddenly
            // without facebook dialog
            FB.Connect.streamPublish('', attachment, action_links, null, "Post this:", jscallback,true);
            }
        });
    });
});
}

Функция простозависает и ничего не происходит.Я искал на этом форуме и нашел этот пост

function fb_publish() {
     FB.ui(
       {
         method: 'stream.publish',
         message: 'Message here.',
         attachment: {
           name: 'Nom ici.',
           caption: 'Caption here.',
           description: (
             'description here'
           ),
           href: 'url here'
         },
         action_links: [
           { text: 'Code', href: 'action url here' }
         ],
         user_prompt_message: 'Personal message here'
       },
       function(response) {
         if (response && response.post_id) {
           alert('Post was published.');
         } else {
           alert('Post was not published.');
         }
       }
     );  
  }

Этот работает, но у него есть две проблемы 1) Даже если пользователь впервые входит в систему, используя Graph API, и онпредоставляя расширенные разрешения для публикации на своей стене, этот метод будет каждый раз спрашивать пользователя, разрешать или нет - предыдущий не делал этого.2) Этот метод также позволяет пользователям добавлять свои комментарии - я тоже этого не хочу.

Я хочу беспрепятственно публиковать на стене без повторного запроса разрешения, поскольку они уже предоставили его ранее.

Я использую PHP - любые советы будут оценены Спасибо

Ответы [ 3 ]

0 голосов
/ 01 июля 2010

Я не мог найти способ сделать это, используя Javascript - поэтому я использовал php вместо


try 
{
   $statusUpdate = $facebook->api('/me/feed', 'post', array('message'=> 'example status message', 'cb' => ''));
} 
catch (FacebookApiException $e) 
{

}


Надеюсь, это кому-нибудь поможет

0 голосов
/ 06 декабря 2011

попробуйте этот код, чтобы разместить на стене

FB.ui(
            {
                method: 'feed',
                name: 'NAME',
                link: 'LINK OF THE WEBSITE OR PAGE',
                picture: 'IMAGE_URL IF YOU NEED IT',
                caption: 'Reference Documentation',
                description: "DESCRIPTION"
            },
            function(response) {
                if (response && response.post_id) {
                    alert('Post was published.');

                } else {
                    alert('Post was not published.');
                }
            }
        );

Этот код работает в моем приложении. надеюсь, это тоже решит твою проблему.

0 голосов
/ 30 июня 2010

Я думаю, это то, что вы ищете.

Возьмите разрешения заранее. А также затем публикуйте в потоковом режиме, используя Graph API, а не Javascript SDK. (это не будет вовлекать пользователя во время публикации и произойдет на вашем сервере в php-коде)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...