3
votes
  • I am implement photo post on wall for facebook.when run in Emulator it works fine but not work in device?
  • Its show on device ERROR: Invalid android_key parameter.The key 3x3UBQp16... does not match any allowed key.Configure your app Key hashes at http://developers.facebook.com/apps/47775390...
  • I am try to another device but it not work.
  • Here is my code...

    // Facebook

'

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 32665:
            facebook.authorizeCallback(requestCode, resultCode, data);
        }
        }

        public void onComplete(Bundle values) {

        }

        public void onFacebookError(FacebookError e) {

        }

        public void onError(DialogError e) {

        }

        public void onCancel() {

        }

        public class StartFBupdateStatus extends AsyncTask<Void, Void, String> {
            private String mFacebookToken;

            public StartFBupdateStatus(String mFacebookToken) {
                this.mFacebookToken = mFacebookToken;

            }

            @Override
            protected void onPreExecute() {

                // super.onPreExecute();
                pDialog = ProgressDialog.show(getParent(), "Please wait...",
                        "Photo Uploading on Wall", true, true,
                        new OnCancelListener() {
                            public void onCancel(DialogInterface pd) {
                                try {
                                    pDialog.dismiss();
                                    pDialog = null;
                                    taskFBupdateStatus.cancel(true);
                                } catch (Exception e) {
                                    Log.e("Exception Cought in onCancel:- ",
                                            e.toString());
                                }
                            }
                        });

            }

            @SuppressWarnings("deprecation")
            @Override
            protected String doInBackground(Void... params) {
                String response = null;

                try {

                    Bundle bundle = new Bundle();

                    bundle.putString(Facebook.TOKEN, this.mFacebookToken);
                    // String url = "https://graph.facebook.com/me/photos";
                    // String url = "https://graph.facebook.com/me/";

                    BitmapFactory.Options bounds = new BitmapFactory.Options();
                    bounds.inSampleSize = 1;

                    // ByteArrayOutputStream baos = new ByteArrayOutputStream(
                    // 32 * 1024);

                    if (pDetails.image_path != null) {
                        // byte[] data = null;
                        // Bitmap bmImg;
                        // URL myFileUrl = null;
                        try {
                            // myFileUrl = new URL(product.image);
                            // HttpURLConnection conn = (HttpURLConnection)
                            // myFileUrl
                            // .openConnection();
                            // conn.setDoInput(true);
                            // conn.connect();
                            // InputStream is = conn.getInputStream();
                            //
                            // bmImg = BitmapFactory.decodeStream(is);
                            //
                            // bmImg.compress(Bitmap.CompressFormat.PNG, 100, baos);
                            // data = baos.toByteArray();
                            // Log.v("SATERRA-FACEBOOK",
                            // "IMAGE Byte ARRAY SIZE::"+data.length);
                            bundle.putString("name", product.title);
                            bundle.putString("picture", pDetails.image_path);
                            // bundle.putString("message", "icon please");
                            // bundle.putString("link", "http://www.saterra.com");
                            // bundle.putString("description",
                            // product.short_description);
                            response = facebook.request("me/feed", bundle, "POST");

                            Log.d("UPDATE RESPONSE", "" + response);

                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                    } else {

                    }
                    // ********* Over Changes *********

                    // try {
                    // baos.close();
                    // } catch (IOException e1) {
                    // Log.d("baos error", e1.toString());
                    // }
                    if (connMgr.getActiveNetworkInfo() != null
                            && connMgr.getActiveNetworkInfo().isAvailable()
                            && connMgr.getActiveNetworkInfo().isConnected()) {
                        try {
                            // response = Util.openUrl(url, "POST", bundle);
                            JSONObject json = Util.parseJson(response);
                            Log.e("Response Photo String", " " + response);
                            handler.post(new Runnable() {
                                public void run() {
                                    Toast.makeText(getParent(),
                                            "Photo Uploaded...", Toast.LENGTH_LONG)
                                            .show();
                                }
                            });
                        } catch (Exception e) {
                            Log.d("Some problem Please try again", e.toString());
                        }
                    } else {
                        handler.post(new Runnable() {
                            public void run() {
                                Toast.makeText(getParent(),
                                        "InternetConnectionNotAvailable",
                                        Toast.LENGTH_LONG).show();
                            }
                        });
                    }

                } catch (Exception e) {
                    // Log.e("ProductsDetailActivity",e.getMessage());
                    Log.e("ProductsDetailActivity", e.toString());
                    response = null;
                }

                // String s = facebook.getAccessToken()+"\n";
                // s += String.valueOf(facebook.getAccessExpires())+"\n";
                // s += "Now:"+String.valueOf(System.currentTimeMillis())+"\n";

                return response;
            }

            @Override
            protected void onPostExecute(String result) {
                if (result == null) {
                    Toast toast = Toast.makeText(getParent(), "Facebook Error...",
                            Toast.LENGTH_LONG);
                    // toast.setGravity(Gravity.CENTER, 5, 5);
                    toast.show();
                } else if (result.indexOf("Duplicate status message") > -1) {
                    Toast toast = Toast.makeText(getParent(),
                            "You already said that..", Toast.LENGTH_LONG);
                    // toast.setGravity(Gravity.CENTER, 5, 5);
                    toast.show();
                } else if (result.indexOf("OAuthException") > -1) {
                    Toast toast = Toast.makeText(getParent(), "Facebook Error...",
                            Toast.LENGTH_LONG);
                    // toast.setGravity(Gravity.CENTER, 5, 5);
                    toast.show();
                } else {
                    Toast toast = Toast.makeText(getParent(),
                            "Facebook update sent", Toast.LENGTH_LONG);
                    // toast.setGravity(Gravity.CENTER, 5, 5);
                    toast.show();
                }

                pDialog.dismiss();
            }

        }

        private void fbAuthAndPost() {
            facebook.authorize(getParent(), new String[] { "publish_stream" },
                    new DialogListener() {

                        @Override
                        public void onComplete(Bundle values) {
                            Log.d(this.getClass().getName(),
                                    "Facebook.authorize Complete: ");
                            saveFBToken(facebook.getAccessToken(),
                                    facebook.getAccessExpires());
                            mFacebookToken = facebook.getAccessToken();
                            // updateStatus(values.getString(Facebook.TOKEN),
                            // message);
                            StartFBupdateStatus taskFBupdateStatus = new StartFBupdateStatus(
                                    mFacebookToken);
                            taskFBupdateStatus.execute();
                        }

                        @Override
                        public void onFacebookError(FacebookError error) {
                            Log.d(this.getClass().getName(),
                                    "Facebook.authorize Error: " + error.toString());
                        }

                        @Override
                        public void onError(DialogError e) {
                            Log.d(this.getClass().getName(),
                                    "Facebook.authorize DialogError: "
                                            + e.toString());
                        }

                        @Override
                        public void onCancel() {
                            Log.d(this.getClass().getName(),
                                    "Facebook authorization canceled");
                        }
                    });
        }

        private void saveFBToken(String token, long tokenExpires) {
            SharedPreferences prefs = PreferenceManager
                    .getDefaultSharedPreferences(this);
            prefs.edit().putString("FacebookToken", token).commit();
        }
Complete solution Post Photo & text Using Facebook SDK 3.0 Facebook Photo postnoviceAndroid