0

我正在尝试在 facebook 上上传图片。使用此代码

      private void getFb()
    {

        final SharedPreferences mPrefs = getSharedPreferences(
                "fbPref", Activity.MODE_PRIVATE);

        String access_token = mPrefs.getString("access_token", null);
        long expires = mPrefs.getLong("access_expires", 0);
        if(access_token != null) {
            fb.setAccessToken(access_token);
        }
        if(expires != 0) {
            fb.setAccessExpires(expires);
        }

        if(!fb.isSessionValid()) 
        {
            fb.authorize(this, new String[] {"publish_stream"}, new DialogListener() {
                public void onComplete(Bundle values) {
                    SharedPreferences.Editor editor = mPrefs.edit();
                    editor.putString("access_token", fb.getAccessToken());
                    editor.putLong("access_expires", fb.getAccessExpires());
                    editor.commit();
                }

                public void onFacebookError(FacebookError error) {}

                public void onError(DialogError e) {}

                public void onCancel() {}
            });
        }

    }



    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        fb.authorizeCallback(requestCode, resultCode, data);

        Bundle parameters = new Bundle();
  //      parameters.putString(Facebook.TOKEN, fb.getAccessToken());
        // The byte array is the data of a picture.
        parameters.putString("message", "LolCats Test");
parameters.putString("picture", "http://cdn3.f-cdn.com/ppic/514992/logo/597178/profile_logo_597178.jpg");
parameters.putString("caption", "LLoll casts");

        try {
            fb.request("me/photos", parameters, "POST");

        } catch (FileNotFoundException fileNotFoundException) {
           // makeToast(fileNotFoundException.getMessage());
        } catch (MalformedURLException malformedURLException) {
          //  makeToast(malformedURLException.getMessage());
        } catch (IOException ioException) {
         //   makeToast(ioException.getMessage());
        }

    }

唯一发生的事情是打开 FB 应用程序的页面,执行一些进度条,然后返回应用程序,没有错误等。图像未在 facebook 上共享有什么问题?

4

3 回答 3

3

请试试这个。

parameters.putString("message", "LolCats Test");
parameters.putByteArray("source", "http://cdn3.fcdn.com/ppic/514992/logo/597178/profile_logo_597178.jpg".getBytes());
于 2012-09-10T06:32:37.567 回答
0

此代码对我有用,请参阅此处的示例中的更多详细信息Bitmap bi=BitmapFactory.decodeResource(getResources(), rec_id); ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putByteArray("photo", data); params.putString("caption", status); AsyncFacebookRunner mAsyncRunner=new AsyncFacebookRunner(fb); mAsyncRunner.request("me/photos", parems,"POST",new mRequestListener(),null);

于 2012-09-10T07:13:07.623 回答
0

使它可以使用此代码....

private void getFb()
        {
            fb = new Facebook(Constants.facebookKey);
            String[] arrayOfString = new String[1];
            arrayOfString[0] = "publish_stream";
            fb.authorize(this, arrayOfString, new FBDialogListener());
        }

        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) 
        {
            super.onActivityResult(requestCode, resultCode, data);
            fb.authorizeCallback(requestCode, resultCode, data);
        }


        private class FBDialogListener implements Facebook.DialogListener
        {

            public void onComplete(Bundle values)
            {
                Bundle localBundle = new Bundle();
                String str1 = "Myapp";
                String str2 = "This image is by Myapp, app for Android.";
                String str3 = "Download It";
                Object[] arrayOfObject = new Object[6];
                  arrayOfObject[0] = str1;
                  arrayOfObject[1] = str2;
                  arrayOfObject[2] = bitmapUrls.get(currentPosition);
                  arrayOfObject[3] = bitmapUrls.get(currentPosition);
                  arrayOfObject[4] = str3;
                  arrayOfObject[5] = "http://play.google.com/store/apps/details?id=myapp";
                  localBundle.putString("attachment", String.format("{\"name\":\"%s:\",\"href\":\"\",\"caption\":\"\",\"description\":\"%s\",\"media\":[{\"type\":\"image\",\"src\":\"%s\",\"href\":\"%s\"}],\"properties\":{\"%s\":{\"text\":\"Android market\",\"href\":\"%s\"}}}", arrayOfObject));
                  fb.dialog(ImageActivity.this, "stream.publish", localBundle, new PublishDialogListener());

            }

            public void onFacebookError(FacebookError e) {
            }

            public void onError(DialogError e) {                
            }

            public void onCancel() {

            }
        }

        private class PublishDialogListener implements Facebook.DialogListener
        {

            public void onComplete(Bundle values) {
                Toast.makeText(ImageActivity.this,  "Image has been shared"  , Toast.LENGTH_LONG).show();
            }

            public void onFacebookError(FacebookError e) {
            }

            public void onError(DialogError e) {
            }

            public void onCancel() {
            }

        }
于 2012-09-14T03:43:38.000 回答