Как опубликовать на стене Facebook с помощью Android android SDK без открытия диалогового windows

Я использую facebook sdk, и с помощью примера, приведенного в этом SDK, я разработал код для входа и сохранения access_token в базу данных

У меня 2 проблемы:

1). когда я пытаюсь получить access_token из базы данных и передать его в facebook, он не позволяет мне публиковать на стене, используя этот пример, данный с помощью этой facebook sdk, почему это так?

2). Я прошел через этот код facebook.java, но я получил то, что для публикации на стене мне нужно открыть диалоговое окно, так как нет другого способа передать мое сообщение сразу и отправить сообщение. Пожалуйста, скажите мне решение по отношению к нему или tel me wat, если я хочу публиковать на стене, не открывая диалоговое окно

mPostButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { String message = "Post this to my wall"; Bundle params = new Bundle(); params.putString("message", message); mAsyncRunner.request("me/feed", params, "POST", new WallPostRequestListener()); } }); public class WallPostRequestListener extends BaseRequestListener { public void onComplete(final String response) { Log.d("Facebook-Example", "Got response: " + response); String message = ""; try { JSONObject json = Util.parseJson(response); message = json.getString("message"); } catch (JSONException e) { Log.w("Facebook-Example", "JSON Error in response"); } catch (FacebookError e) { Log.w("Facebook-Example", "Facebook Error: " + e.getMessage()); } final String text = "Your Wall Post: " + message; Example.this.runOnUiThread(new Runnable() { public void run() { mText.setText(text); } }); } } 

Что не так с вышеуказанным кодом .. его не публиковать на стене и давать мне Wall Post: пустой на телефоне и эмуляторе как

Заранее спасибо..

я применил следующий код и смог успешно опубликовать свое сообщение на стене.

 public void postOnWall(String msg) { Log.d("Tests", "Testing graph API wall post"); try { String response = mFacebook.request("me"); Bundle parameters = new Bundle(); parameters.putString("message", msg); parameters.putString("description", "test test test"); response = mFacebook.request("me/feed", parameters, "POST"); Log.d("Tests", "got response: " + response); if (response == null || response.equals("") || response.equals("false")) { Log.v("Error", "Blank response"); } } catch(Exception e) { e.printStackTrace(); } } 

Я обновил свой учебник по адресу http://www.integratingstuff.com/2010/10/14/integrating-facebook-into-an-android-application/, и теперь он точно отвечает на этот вопрос. Он основан и в основном так же, как и ответ Ankit, но направляет людей от начала до конца посредством реализации всего процесса.

Ну, это не то, что что-то публикуется на стене, не сообщая пользователю. Когда пользователь разрешает ваше приложение, тогда Android-sdk Android представляет другую страницу, на которой есть текст, который посылают ваши приложения, и текстовое поле, где пользователь может писать на стене, подобно скриншоту, который я приложил

Фактическое расположение на мобильном устройстве несколько отличается, но оно находится в том же формате. Этот процесс хорошо показан в примерах примеров facebook android sdk.

Теперь проверьте вопрос, заданный в этом сообщении:

Facebook Connect Android – с помощью stream.publish @ http://api.facebook.com/restserver.php ‘> Facebook Connect Android – с помощью stream.publish @ http://api.facebook.com/restserver.php

В этом вопросе ищите их: postParams.put (), похожие типы строк будут присутствовать в некоторых ваших JAVA-файлах. Это строки, в которых вы можете размещать данные в Facebook.

Например:

 postParams.put("user_message", "TESTING 123"); 

это сообщение,

postParams.put("attachment", "{\"name\":\"Facebook Connect for Android\",\"href\":\"http://code.google.com/p/fbconnect-android/\",\"caption\":\"Caption\",\"description\":\"Description\",\"media\":[{\"type\":\"image\",\"src\":\"http://img40.yfrog.com/img40/5914/iphoneconnectbtn.jpg\",\"href\":\"http://developers.facebook.com/connect.php?tab=iphone/\"}],\"properties\":{\"another link\":{\"text\":\"Facebook home page\",\"href\":\"http://www.facebook.com\"}}}");

это строка, в которой вы указываете значок приложения, описания, заголовка, заголовка и т. д.

alt text

Я использовал код Ankit для публикации на стене facebook, но его код дал мне ошибку android.os.NetworkOnMainThreadException .

После поиска по этой проблеме решение подсказывало мне, что поставить код в AsyncTask чтобы избавиться от этой проблемы. После изменения его кода он отлично работает для меня.

Измененный код выглядит так:

 public class UiAsyncTask extends AsyncTask { public void onPreExecute() { // On first execute } public Void doInBackground(Void... unused) { // Background Work Log.d("Tests", "Testing graph API wall post"); try { String response = facebook.request("me"); Bundle parameters = new Bundle(); parameters.putString("message", "This test message for wall post"); parameters.putString("description", "test test test"); response = facebook.request("me/feed", parameters, "POST"); Log.d("Tests", "got response: " + response); if (response == null || response.equals("") || response.equals("false")) { Log.v("Error", "Blank response"); } } catch(Exception e) { e.printStackTrace(); } return null; } public void onPostExecute(Void unused) { // Result } } 

Этот class помогает мне отправлять отправленные сообщения на моей стене Facebook БЕЗ диалога:

 public class FBManager{ private static final String FB_ACCESS_TOKEN = "fb_access_token"; private static final String FB_EXPIRES = "fb_expires"; private Activity context; private Facebook facebookApi; private Runnable successRunnable=new Runnable(){ @Override public void run() { Toast.makeText(context, "Success", Toast.LENGTH_LONG).show(); } }; public FBManager(Activity context){ this.context = context; facebookApi = new Facebook(FB_API_ID); facebookApi.setAccessToken(restoreAccessToken()); } public void postOnWall(final String text, final String link){ new Thread(){ @Override public void run(){ try { Bundle parameters = new Bundle(); parameters.putString("message", text); if(link!=null){ parameters.putString("link", link); } String response = facebookApi.request("me/feed", parameters, "POST"); if(!response.equals("")){ if(!response.contains("error")){ context.runOnUiThread(successRunnable); }else{ Log.e("Facebook error:", response); } } } catch (Exception e) { e.printStackTrace(); } } }.start(); } public void save(String access_token, long expires){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); Editor editor=prefs.edit(); editor.putString(FB_ACCESS_TOKEN, access_token); editor.putLong(FB_EXPIRES, expires); editor.commit(); } public String restoreAccessToken(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getString(FB_ACCESS_TOKEN, null); } public long restoreExpires(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getLong(FB_EXPIRES, 0); } 

}

  • Вы должны использовать тему Theme.AppCompat (или потомок) с этим действием
  • Обновление конфликта конфликтов для игровых сервисов 9.4.0 Android studio 2.2
  • Требуется объяснение процедуры запуска Geofence?
  • Установить ключ и значение в прядильщике
  • Отжимать содержимое при нажатии в текстовом редакторе
  • ArrayAdapter в android для создания простого списка
  • Как сделать вертикальный SeekBar в Android?
  • Как работает Android Support Library?
  • Как сделать изображение подходящим в круговой рамке в андроиде
  • Добавление кнопки OnClick в сообщение в уведомлении
  • Android Set Multiple Alarms
  • Давайте будем гением компьютера.