Опубликовать на стене Facebook без отображения диалога на Android

Я пытаюсь опубликовать ленту на стене Facebook, не открывая диалоговое окно с помощью Facebook Android SDK. Я пытался найти способ, но не смог найти. Кто-нибудь может подсказать, как постить на стену в фоновом режиме, не открывая диалог.

Я попытался использовать приведенный ниже код

public static void PublishToFeedInBackground()
{
     final Bundle _postParameter = new Bundle();
     _postParameter.putString("name", name);
     _postParameter.putString("link", link);
     _postParameter.putString("picture", link_to_image);
     _postParameter.putString("caption", caption);
     _postParameter.putString("description", description);

     final List<String> PERMISSIONS = Arrays.asList("publish_actions");

     if (Session.getActiveSession() != null)
     {
            // Check for publish permissions    
            List<String> _permissions = Session.getActiveSession().getPermissions();
            if (!isSubsetOf(PERMISSIONS, _permissions))
            {
                NewPermissionsRequest reauthRequest = new Session.NewPermissionsRequest(this.GetContext(), PERMISSIONS);
                Session.getActiveSession().requestNewReadPermissions(reauthRequest);
                return;
            }   
     }

    this.runOnUiThread(new Runnable()
    {
        @Override
        public void run() 
        {
            Request request = new Request(Session.getActiveSession(), "me/feed", _postParameter, HttpMethod.POST);

            RequestAsyncTask task = new RequestAsyncTask(request);
            task.execute();
        }
    });
}

Но он публикует сведения о моей странице приложения вместо *_postParameter*, который я даю.

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

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("name", name);
    params.put("link", link);
    params.put("picture", link_to_image);
    params.put("caption", caption);
    params.put("description", description);

    JSONObject jfeed = new JSONObject(params);
    final GraphObject _feed = GraphObject.Factory.create(jfeed);

    Request.executePostRequestAsync(Session.getActiveSession(), "https://graph.facebook.com/"+userID+"/feed", _feed, new Request.Callback()
    {
       @Override
       public void onCompleted(Response response) 
       {
            Log.i("tag", response.toString());
       }
   });

Второй метод

Request.executeRestRequestAsync(Session.getActiveSession(), "stream.publish", _postParameter, HttpMethod.POST);

person glo    schedule 26.02.2013    source источник
comment
Какие у вас параметры поста?   -  person Ming Li    schedule 26.02.2013
comment
postParameters — это пакет, который содержит сообщение, ссылку на изображение, ссылку на страницу и т. д.   -  person glo    schedule 27.02.2013
comment
Я имею в виду, пожалуйста, приведите пример того, что вы указываете в postParameters (с кодом), и что на самом деле публикуется на вашей стене. Таким образом, мы можем посмотреть и, возможно, указать на какие-либо ошибки. Ваш текущий пример кода слишком лаконичен для настоящей отладки.   -  person Ming Li    schedule 27.02.2013
comment
Я отредактировал свой вопрос. Можете ли вы найти, что я делаю неправильно   -  person glo    schedule 27.02.2013
comment
Я не вижу здесь ничего явно неправильного. Каков пример ссылки, которую вы пытались опубликовать?   -  person Ming Li    schedule 27.02.2013
comment
Вы также можете перейти к инструменту просмотра графиков developers.facebook.com/tools/explorer, чтобы попробуйте граф запросов.   -  person Ming Li    schedule 27.02.2013
comment
Пример ссылки: apps.facebook.com/my_game.   -  person glo    schedule 27.02.2013
comment
Что ж, если вы разместили ссылку на свое приложение, разве не имеет смысла публиковать сведения о вашем приложении? Попробуйте изменить ссылку на что-нибудь вроде instagram.com или google.com.   -  person Ming Li    schedule 27.02.2013
comment
Ссылка должна быть там, где пользователь попадает при нажатии на сообщение. То, что должно быть показано в сообщении, должно быть другими данными, которые я передал, такими как имя, описание, изображение и т. д.   -  person glo    schedule 27.02.2013
comment
@Ming Li Я обнаружил проблему. Спасибо за попытку помочь   -  person glo    schedule 27.02.2013


Ответы (2)


Я узнал, в чем проблема. Я не просил правильных разрешений, и путь к графу также был неправильным. Правильный метод:

public static void PublishToFeedInBackground()
{

final Bundle _postParameter = new Bundle();
 _postParameter.putString("name", name);
 _postParameter.putString("link", link);
 _postParameter.putString("picture", link_to_image);
 _postParameter.putString("caption", caption);
 _postParameter.putString("description", description);

     final List<String> PERMISSIONS = Arrays.asList("publish_stream");

 if (Session.getActiveSession() != null)
 {
       NewPermissionsRequest reauthRequest = new Session.NewPermissionsRequest(this.GetContext(), PERMISSIONS);
        Session.getActiveSession().requestNewPublishPermissions(reauthRequest);
 }

this.runOnUiThread(new Runnable()
{
    @Override
    public void run() 
    {
        Request request = new Request(Session.getActiveSession(), "feed", _postParameter, HttpMethod.POST);

        RequestAsyncTask task = new RequestAsyncTask(request);
        task.execute();
    }
});
}
person glo    schedule 27.02.2013

Насколько я знаю, это было возможно с REST API, который сейчас устарел... https://developers.facebook.com/docs/reference/rest/

РЕДАКТИРОВАТЬ: вот функции, которые вы можете использовать для публикации https://developers.facebook.com/docs/reference/rest/#publishing-methods

person Ferdau    schedule 26.02.2013
comment
Не могли бы вы привести пример - person glo; 27.02.2013
comment
Я пробовал использовать следующий метод, но он тоже не сработал Request.executeRestRequestAsync(Session.getActiveSession(), "stream.publish", _postParameter, HttpMethod.POST); - person glo; 27.02.2013
comment
Я думаю, что все действия по публикации могут быть выполнены только в пределах Dialog - person thepoosh; 27.02.2013
comment
на ios можно то почему в android нельзя - person glo; 27.02.2013
comment
обе ссылки теперь недействительны, пожалуйста, обновите их соответствующим образом. - person Lavekush Agrawal; 12.10.2015