Вам необходимо разрешение stream.publish для использования метода stream.publish или эквивалентного вызова API графа.
Вы можете проверить, что пользователь уже предоставил это разрешение, примерно так:
FB.getLoginStatus(function(response) { if (response.perms) { /* check perms */ } })
Вы можете запросить разрешение примерно так:
FB.login(function(response) { /* check perms */ }, {scope: 'publish_stream'})
Затем в ответе вы можете проверить, действительно ли оно было предоставлено, тогда вы сможете выполнять вызовы потоковой публикации.
Однако я не распознаю формат вашего звонка «Facebook.streamPublish». Я думаю, что новый API требует, чтобы вы звонили больше как
FB.api({method: 'stream.publish', message: 'hello'}, function(response) {})
В качестве альтернативы всему этому вы можете использовать API диалогов, чтобы создать сообщение и показать его пользователю, чтобы они одобрили или не одобрили его. Это не требует разрешения stream.publish. Примерно так (пример приведен в документации FB.ui API):
FB.ui(
{
method: 'feed',
name: 'Facebook Dialogs',
link: 'http://developers.facebook.com/docs/reference/dialogs/',
picture: 'http://fbrell.com/f8.jpg',
caption: 'Reference Documentation',
description: 'Dialogs provide a simple, consistent interface for applications to interface with users.',
message: 'Facebook Dialogs are easy!'
},
function(response) {
if (response && response.post_id) {
alert('Post was published.');
} else {
alert('Post was not published.');
}
}
);
При изменении курса Facebook, я надеюсь, что часть этой информации все еще будет точной к тому времени, когда вы ее прочитаете (или даже точна с самого начала).