0

Graph APIを使用してFacebookに画像を投稿しようとしています。画像をバイト配列に変換して投稿しようとしましたが、失敗しました。壁に投稿されたテキストが表示されますが、画像は投稿されていません。何が悪いのかわかりません。

以下のSOの利用可能なソリューションをすでに確認しましたが、どれもうまくいきませんでした。

1)グラフ API を使用して、ドローアブル フォルダーから facebook に画像を投稿するにはどうすればよいですか?

2) drawable から facebook に画像を投稿できない

3) Android から Facebook にテキスト付きの画像を投稿する

4)グラフ API を使用して Facebook に Android の写真をアップロードしますか?

これが私が試しているコードです。

private void publishFeedDialog() {
        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
                R.drawable.ic_launcher);

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitMapData = stream.toByteArray();

        final Bundle params = new Bundle();
        params.putString("name", "Test FB Post.");
        params.putString("method", "photos.upload");
        params.putByteArray("picture", bitMapData);

       //Tried below code but not working.          
        /*try {
            String response = mFacebook.request("me/photos", params, "POST");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
        WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(m_context,
                Session.getActiveSession(), params)).setOnCompleteListener(
                new OnCompleteListener() {

                    @Override
                    public void onComplete(Bundle values,
                            FacebookException error) {
                        if (error == null) {
                            // When the story is posted, echo the success
                            // and the post Id.
                            final String postId = values.getString("post_id");
                            if (postId != null) {
                                Toast.makeText(m_context,
                                        "Posted story, id: " + postId,
                                        Toast.LENGTH_SHORT).show();

                                finish();
                            } else {
                                // User clicked the Cancel button
                                Toast.makeText(m_context, "Publish cancelled",
                                        Toast.LENGTH_SHORT).show();
                            }
                        } else if (error instanceof FacebookOperationCanceledException) {
                            // User clicked the "x" button
                            Toast.makeText(m_context, "Publish cancelled",
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // Generic, ex: network error
                            Toast.makeText(getApplicationContext(),
                                    "Error posting story", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    }

                }).build();
        feedDialog.show();
    }

私を案内してください。どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

最後に、元の Facebook SDK 3.5 をラップする Simple Facebook SDK for Android を使用して、Facebook で画像を共有するという問題を解決しました。

この SDK は、 SimpleFacebookクラス を参照するリソースを使用して、Facebook ウォールで画像を共有する簡単な方法を提供します。

デフォルトのアルバムまたは所有している他のアルバムに写真を公開 (アップロード) できます。写真は次のものから作成できます。

  • ビットマップ
  • ファイル
  • バイト[]
private SimpleFacebook mSimpleFacebook;
 mSimpleFacebook = SimpleFacebook.getInstance(this);
 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                    R.drawable.ic_launcher);
   // create Photo instace and add some properties
Photo photo = new Photo(bitmap);
photo.addDescription("Screenshot from sample application");
photo.addPlace("110619208966868");
// publish
mSimpleFacebook.publish(photo, new OnPublishListener()
{
    @Override
    public void onFail(String reason)
    {
    mProgress.hide();
    // insure that you are logged in before publishing
    Log.w(TAG, "Failed to publish");
    }
    @Override
    public void onException(Throwable throwable)
    {
           mProgress.hide();
        Log.e(TAG, "Bad thing happened", throwable);
    }
    @Override
    public void onThinking()
    {
     // show progress bar or something to the user while publishing
      mProgress = ProgressDialog.show(this, "Thinking",
    "Waiting for Facebook", true);
    }
    @Override
    public void onComplete(String id)
    {
        mProgress.hide();
        toast("Published successfully. The new image id = " + id);
    }
});
于 2013-10-22T10:05:13.447 に答える