#android #facebook-graph-api #facebook-android-sdk
#Android #facebook-graph-api #facebook-android-sdk
Вопрос:
Приведенный ниже код, похоже, публикует только «сообщение» и ничего больше. Есть ли что-то, чего мне не хватает? (с использованием Facebook Android SDK)
parameters.putString("link", link);
parameters.putString("description", description);
parameters.putString("caption", caption);
parameters.putString("name", name);
parameters.putString("message", msg);
try {
String response = mFacebook.request("me/feed", parameters, "POST");
} catch (IOException e) {
Log.e("Error", e.toString());
}
Я получаю много предупреждений, но прочитал, что это нормально (кроме того, я получаю предупреждение за «сообщение», но оно все еще публикуется:
Key caption expected byte[] but value was a java.lang.String. The default value <null> was returned.
Attempt to cast generated internal exception:
java.lang.ClassCastException: java.lang.String
Комментарии:
1. Кроме того, я использую текущий FB SDK (загруженный на прошлой неделе)
2. Какие-либо ошибки, которые вы получаете? любой конфликт ByteArray, исключение приведения класса String?
3. @sat, да ClassCastException, метод по-прежнему публикует сообщения на стене FB, но не имеет дополнительных параметров, таких как заголовок, ограничение, имя и т. Д
4. @Venky, да, попробовал сразу. Он публикует на стене без проблем, но проблема заключалась в том, что я хотел более подробный пост, т. Е. с заголовком, описанием, ссылками и т. Д
5. Нет, он по-прежнему не публикует ничего, кроме сообщения.
Ответ №1:
Проверьте мой отредактированный ответ, он будет размещен на стене пользователя:
Он покажет случай исключения, но не беспокойтесь об этом, ваш пост будет успешным.
public void postOnWall() {
try{
Bundle parameters = new Bundle();
parameters.putString("message", "Text is lame. Listen up:");
parameters.putString("name", "Name");
parameters.putString("link", "http://www.google.com");
parameters.putString("caption", "Caption");
parameters.putString("description", "Description");
String response = facebook.request("me/feed",parameters,"POST");
Log.v("response", response);
}
catch(Exception e){}
}
Комментарии:
1. это также не работает, позволяя мне размещать ссылку, заголовок и т. Д. В потоке
2. @Matt Один вопрос, вам нужно публиковать сообщения с диалогом или без него??
3. Без диалога (пожалуйста, не говорите мне, что вы не можете публиковать дополнительные параметры) 🙂
4. @Matt Хотите опубликовать на своей стене или на стене вашего друга??
5. Я хочу опубликовать на своей собственной стене (пользователь стены приложения)
Ответ №2:
Смотрите приведенный ниже код. Это запущенный код. Попробуйте один раз.
public void postOnWall(String msg) {
Log.d("Tests", "Testing graph API wall post");
try {
String response = facebook.request("me");
Bundle parameters = new Bundle();
parameters.putString("message", msg);
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();
}
}
Комментарии:
1. Это именно тот код, на котором я основывался. Он по-прежнему отправляет только сообщение, а не описание
2. В случае сообщения на стене facebook нет разницы между сообщением и описанием. Само сообщение представляет собой описание сообщения на стене (не сообщение с изображением).
3. Хорошо, это имеет смысл, но почему ссылка, имя, заголовок тоже не работают?
4. Сообщение на стене Facebook похоже на комментарий. Это означает, что вы публикуете только сообщение. У него не может быть подписи, имени и т. Д., Подобных комментариям.
5. Итак, извините за мое невежество, как я могу публиковать более подробные сообщения на стене Facebook из моего приложения? (для этого нужно использовать диалоговое окно?)
Ответ №3:
попробуйте это, это будет работать с диалоговым окном аутентификации
private static final String[] PERMISSIONS =
new String[] {"publish_stream", "read_stream", "offline_access"};
Facebook authenticatedFacebook = new Facebook(APP_ID);
postButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
authenticatedFacebook.authorize(Tests.this, PERMISSIONS,
new TestPostListener());
}
});
public class TestPostListener implements DialogListener {
public void onComplete(Bundle values) {
try {
Log.d("Tests", "Testing request for 'me'");
String response = authenticatedFacebook.request("me");
JSONObject obj = Util.parseJson(response);
Log.d("Tests", "Testing graph API wall post");
Bundle parameters = new Bundle();
parameters.putString("message", "Amit Siddhpura");
parameters.putString("description", "Hi Mr. Amit Siddhpura");
response = authenticatedFacebook.request("me/feed", parameters,
"POST");
Log.d("Tests", "got response: " response);
} catch (Throwable e) {
e.printStackTrace();
}
}
public void onCancel() {
}
public void onError(DialogError e) {
e.printStackTrace();
}
public void onFacebookError(FacebookError e) {
e.printStackTrace();
}
}