1

重複の可能性:
グラフ API を使用して Facebook ウォールに画像を投稿する方法

Graph API を使用して Facebook ウォールに投稿しています。

strpostimageurl=/mnt/sdcard/DCIM/mnt/sdcard/DCIM/Camera1354795516555.jpg

String res = UrltoValue.getValuefromUrl("https://graph.facebook.com/"+Login.facebookid+"/feed?access_token="+accesstoken+"&method="+"post"+"&message="+"hi"+"&link="+strpostimageurl);

応答として Bad Request を受け取ります。

画像を投稿するための SD カードのパスを指定することはできますか? オブジェクトのビットマップしか持っていないので、そのビットマップでファイルを作成し、それを使用しています。

また、複数の友達のウォールに投稿する必要があるため、Graph API を使用することを好みます。

4

1 に答える 1

0

Facebook APIに間違った値を渡したため、BadRequestエラーが発生します。

まず、リンクまたはURLを介して画像/写真をアップロードする場合は、コードにあるような「リンク」タグではなく「ソース」タグを使用する必要があります。

strpostimageurl次に、上記を修正した場合、実際には有効なURLがないことを確認して、コードが機能するかどうかは疑問です。

第三に、それは有効なURLではないため、"source"タグを使用することはできません。次のようなものを使用する必要があります。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmpImageGallery.compress(CompressFormat.JPEG, 100, baos);

Bundle postImgGallery = new Bundle();

// ADD THE PHOTO DATA TO THE BUNDLE
postImgGallery.putByteArray("photo", baos.toByteArray());

// ADD THE CAPTION FROM THE STRING finalStatusMessage TO THE BUNDLE
if (finalStatusMessage.equals(""))  {
    /*****  DO NOTHING HERE     *****/
} else {
    postImgGallery.putString("caption", finalStatusMessage);
}

mAsyncRunner.request("me/photos", postImgGallery, "POST", new PhotoUploadListener(), null);

ここ、

  1. mAsyncRunnerAsyncFacebookRunner ClassFacebookSDKの一部であるのインスタンスです。
  2. bmpImageGalleryBitmapは、ユーザーが選択した画像が保存されているインスタンスです。以下を使用して、ギャラリーからユーザーが選択した画像を取得します。

これは、ギャラリーを開き、ユーザーがギャラリーから写真/画像を選択できるようにするOnClickイベントで実行されるコードです。Button

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, reqcdGalleryImage);

次に、このメソッドを使用して、選択した画像が前のコードで使用されたインスタンスonActivityResult()に渡されます。BitmapbmpImageGallery

bmpImageGallery = MediaStore.Images.Media.getBitmap(this.getContentResolver(), targetURI);

編集:

次に、これを試してください(OnClick):

Intent getCameraImage = new Intent("android.media.action.IMAGE_CAPTURE");

File cameraFolder;

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
    cameraFolder = new File(android.os.Environment.getExternalStorageDirectory(),"give_a_folder_name/camera");
else
    cameraFolder= StatusUpdate.this.getCacheDir();
if(!cameraFolder.exists())
    cameraFolder.mkdirs();

File photo = new File(Environment.getExternalStorageDirectory(), "give_a_folder_name/camera/camera_snap.jpg");
getCameraImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
initialURI = Uri.fromFile(photo);

startActivityForResult(getCameraImage, 2);

これでonActivityResult()

targetURI = initialURI;
getContentResolver().notifyChange(targetURI, null);

ContentResolver cr = getContentResolver();

try {

    // SET THE IMAGE FROM THE CAMERA TO THE IMAGEVIEW
    bmpImageCamera = android.provider.MediaStore.Images.Media.getBitmap(cr, targetURI);

    // SET THE IMAGE FROM THE GALLERY TO THE IMAGEVIEW
    imgvwSelectedImage.setImageBitmap(bmpImageCamera);

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

targetURIとinitialURIは、グローバルに宣言されたUriインスタンスです。

于 2012-12-06T12:55:04.517 に答える