Android не может разместить изображение на стене с помощью Facebook SDK - PullRequest
1 голос
/ 11 января 2012

У меня проблема с изображением на стене с помощью 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)

1 Ответ

0 голосов
/ 04 июня 2012
mFacebook.setAccessToken(access_token);
    boolean validity=mFacebook.isSessionValid();

    try
    {
    byte[] data = null;

    BitmapFactory.Options opts = new BitmapFactory.Options();

     opts.inSampleSize=4;           
     Bitmap bi = BitmapFactory.decodeFile(st_imagepath,opts);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
     data = baos.toByteArray();


      Bundle params = new Bundle();
      params.putString(Facebook.TOKEN, mFacebook.getAccessToken());
      params.putString("method", "photos.upload");
      params.putString("caption", caption);



      params.putByteArray("picture", data);

      AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook);

      mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);

используйте этот рабочий код. Ур проблема будет решена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...