У меня проблема с изображением на стене с помощью Facebook SDK.Ниже приведен мой код.
Диалог разрешения Facebook на начало активности:
fb = new Facebook(fb_id);
fb.authorize(this, new String[] { "publish_stream",
"read_stream", "offline_access","read_friendlists"}, new DialogListener(){
public void onComplete(Bundle values) {
Log.e("oncomplete","value");
if (values.isEmpty()) {
Log.e("oncomplete","value is empty");
return;
}
if (!values.containsKey("POST")) {
token = fb.getAccessToken();
}
}
public void onFacebookError(FacebookError e) {}
public void onError(DialogError e){}
public void onCancel() {}
});
При нажатии кнопки отправить фид на стену
public void onClick(View v){
if(v==post_to_wall){
Toast.makeText(getApplicationContext(), "fb token " + token, Toast.LENGTH_LONG).show();
final Handler handler = new Handler(){
public void handleMessage(Message what){
finish();
}
};
Thread thread = new Thread(){
public void run(){
publishToFriendsWall(friends_id);
handler.sendEmptyMessage(0);
}
};
thread.start();
}
}
опубликовать в друзьях метод стены
public void publishToFriendsWall(String friends_id){
if(fb.isSessionValid()){
try{
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, token);
params.putString("message", edittext.getText().toString());
params.putString("link", "http://www.mysite.com");
params.putString("caption", "my caption");
params.putString("description", "description of my link. Click the link to find out more.");
params.putString("name", "my name");
//params.putString("picture", "mypic url");
fb.request(((friends_id == null) ? "me" : friends_id) + "/feed", params, "POST");
}catch(Exception e){
Log.d(null, "Fb post to wall error occured " + e.getClass().getName());
}
}
}
проблема в том, что я поставил следующий код
params.putString("picture", "mypic url");
там ничего не было опубликовано на стене, и если я прокомментировал приведенный выше код, он работает нормально, я прочитал через facebookВ графе api документации для публикации картинки необходим токен доступа и действительный URL для картинки.Я сделал все это, получив токен доступа, и URL-адрес действителен.что не так с моим кодом?Там также не было обнаружено никакой ошибки.Единственное, что я получаю в logcat, это предупреждение типа
Key picture expected byte[] but value was a java.lang.String. the default value <null> was return
Attempt to cast generated internal exception:
java.lang.ClassCastException: java.lang.String
at android.os.Bundle.getByteArray(Bundle.java:1305)
at com.facebook.android.Util.encodePostBody(Util.java:63)
at com.facebook.android.Util.openUrl(Util.java:182)
at com.facebook.android.Facebook.request(Facebook.java:563)