0

Facebookにテキスト付きの画像を投稿するにはどうすればよいですか?テキストやリンクを投稿する方法は知っていますが、画像も投稿したいと思います。

これが私が試したことです:

 byte[] data = null;
 Bitmap bi = BitmapFactory.decodeFile("R.drawable.plate1");
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
 data = baos.toByteArray();
 parameters.putByteArray("picture", data);

 int plate = getResources().getIdentifier("com.b2creativedesigns.eyetest:drawable/plate1", null, null);
 parameters.putString("picture", String.valueOf(plate)); 

どちらも機能しません。投稿しようとしても何も起こりません。何も投稿されていません。以下のコードで、それは動作します。

ウェブサイトからの画像の投稿は簡単ですが、ウェブサイトがシャットダウンしたり、リンクが変更されたりすると、機能しなくなります。

  parameters.putString("picture", "https://lh3.ggpht.com/f79UCpnLisZxO2P2C43f55YLvFpNco_cTcC-t9Ck-Qmqe5jwKbfnUvCh5N6-Te-mOw=w124");

3番目の例:

  byte[] data = null;
  Bitmap bi = BitmapFactory.decodeFile("R.drawable.plate1");
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
  data = baos.toByteArray();
  parameters.putString("method", "photos.upload");
  parameters.putByteArray("picture", data);
4

2 に答える 2

3
Session.openActiveSession(activity, true,
                            new Session.StatusCallback() {
                                @Override
                                public void call(Session session,
                                        SessionState state,
                                        Exception exception) {
                                    // TODO Auto-generated method stub
                                    if (session.isOpened()) {
                                        fbSession = session;
    Bundle bundle = new Bundle();
    bundle.putString("caption", "Check this out, what do you think?");
    bundle.putString("name", name);
    bundle.putString("description", description);
    bundle.putString("picture", image);
    new WebDialog.FeedDialogBuilder(HomeActivity.this, session, bundle)
            .build().show();
                                    }
                                }

                            });

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    default:
        if (Session.getActiveSession() != null)
            Session.getActiveSession().onActivityResult(this, requestCode,
                    resultCode, data);
        break;
    }
}

このコードをAndroidマニフェストファイルに追加し、FB_AppIDの代わりにFacebookIDを配置します。

<activity android:name="com.facebook.LoginActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/><meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/FB_AppID"/>
于 2015-09-10T08:11:20.053 に答える
0

編集:申し訳ありませんが、REST APIは非推奨になっているため、使用方法についてアドバイスするべきではありませんでした。これは、GraphAPIを使用して自分の壁に写真をアップロードする方法です。

Bundle params = new Bundle();
params.putByteArray("photo", data);
params.putString("caption", "Test photo upload");
    mAsyncRunner.request("me/photos", params, "POST",
    new PhotoUploadListener(), null);

これを試して、機能するかどうかを確認してください。これは、ドキュメントのHackBookの例から直接引用したものです。画像の圧縮には、SDK内のメソッドを使用できます。このUtility.scaleImageメソッドは、Facebookの標準に一致するようにすべての圧縮とスケーリングを実行します。

================================================== ================================

オリジナルメッセージ:

photos.uploadはRESTAPIを使用しており、非推奨になっているため、グラフAPIを使用して写真をアップロードすることをお勧めしますが、RESTAPIを使用した迅速で汚い解決策を次に示します。

のような変数にバイト配列を入れdataたら、次のようにします。

Bundle params = new Bundle();
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
mFacebook.request(params);

それが役に立ったら教えてください。

于 2012-08-13T00:11:37.533 に答える