I am trying to post something on a Facebook wall using a graphical API, but it does not work for me. He has no errors, but he also doesnβt post anything on my wall.
Here are the codes:
public class ActivityName extends Activity{ Dialog dialog; Facebook fb; SharedPreferences sp; String access_token, name, email; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.success); String APP_ID = "MY_ID"; fb = new Facebook(APP_ID); sp = getPreferences(MODE_PRIVATE); access_token = sp.getString("access_token", null); long expires = sp.getLong("access_expires", 0); if(access_token!= null){ fb.setAccessToken(access_token); } if(expires != 0){ fb.setAccessExpires(expires); } ((Button) findViewById(R.id.btn_home)).setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub openContextMenu(v); } }); ((Button) findViewById(R.id.btn_home)).setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub menu.setHeaderTitle("Tell the world!"); menu.add(0, 0, 0, "Facebook"); menu.add(0, 1, 0, "Twitter"); menu.add(0, 2, 0, "Skip"); } }); } public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { case 1: break; case 0: fb.authorize(SuccessActivity.this, new String[]{ "photo_upload,user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() { public void onComplete(Bundle values) { postToWall(); } public void onFacebookError(FacebookError error) { } public void onError(DialogError e) { } public void onCancel() { } }); break; case 2: Intent i = new Intent(getApplicationContext(),MainActivity.class); startActivity(i); overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); break; } return true; } public void onBackPressed() { } @SuppressLint("SdCardPath") public void postToWall() { // post on user wall. try { if (fb.isSessionValid()) { byte[] data = null; Bitmap bi = BitmapFactory.decodeFile("/sdcard/Asa.jpg"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); data = baos.toByteArray(); Bundle params = new Bundle(); params.putString(Facebook.TOKEN, fb.getAccessToken()); params.putString("message", "Test from Android AVD"); params.putByteArray("picture", data); AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(fb); mAsyncRunner.request("/me/feed", params,"POST", new SampleUploadListener(),null); } }catch(Exception e){ e.printStackTrace(); } } public class SampleUploadListener extends BaseRequestListener { public void onComplete(final String response, final Object state) { try { // process the response here: (executed in background thread) Log.d("Facebook-Example", "Response: " + response.toString()); JSONObject json = Util.parseJson(response); final String src = json.getString("src"); // then post the processed result back to the UI thread // if we do not do this, an runtime exception will be generated // eg "CalledFromWrongThreadException: Only the original // thread that created a view hierarchy can touch its views." } catch (JSONException e) { Log.w("Facebook-Example", "JSON Error in response"); } catch (FacebookError e) { Log.w("Facebook-Example", "Facebook Error: " + e.getMessage()); } } @Override public void onFacebookError(FacebookError e, Object state) { } } }
Can someone pint something that is missing or incorrect in these codes? Any thoughts would be greatly appreciated.