3

デバイスからユーザーの壁に画像を投稿しようとしています。私は見つけました:http://codenameone.blogspot.com/2011/09/lwuit-and-facebook-api-by-chen-fishbein_18.html、しかしそれは投稿画像をサポートしていないので、私は次のような簡単なメソッドを書きましたこれ:

 public void postOnWallWithPhoto(String userId, String message, byte[] img) throws IOException {
    checkAuthentication();
    FacebookRESTService con = new FacebookRESTService(token, userId, FEED, true);
    con.setContentType("image/jpeg");
    con.addArgument("message", message);
    con.addArgument("type", "photo");
    con.addArgument("picture", img);
    if (slider != null) {
        SliderBridge.bindProgress(con, slider);
    }
    for (int i = 0; i < responseCodeListeners.size(); i++) {
        con.addResponseCodeListener((ActionListener) elementAt(i));
    }
    current = con;
    NetworkManager.getInstance().addToQueueAndWait(con);
}

このメソッドは次のように呼び出されます。

FileConnection fc = (FileConnection) Connector.open(path);
InputStream is = fc.openInputStream();
byte[] b = new byte[(int) fc.fileSize()];
is.read(b);
FaceBookAccess.getInstance().postOnWallWithPhoto(me.getId(), "test2", b);

リクエストを送信した後、壁にはテキストのみが表示されます(この例ではtest2)。画像があるはずの場所に、「無効です。無効です」というメッセージが表示されます。

誰かが私が間違っていることを知っていますか?または、Facebookの壁に画像を投稿するのに役立つコードを誰かが私と共有できますか?

4

2 に答える 2

1

J2me が Facebook サポート用の API を提供していないことは周知のとおりですが、Facebook ウォールに画像を投稿できる方法があり、私はそれを実行しました。以下では、j2me を使用して Facebook ウォールに画像を投稿する方法の簡単な手順を共有しています。

  1. facebook から ACCESS TOKEN を取得します。PHP またはサードパーティの API を使用して実行できます (私の場合は app42(shephertz) クラウド サービスを使用しました)。

  2. アクセス トークンを取得したら、そのアクセス トークンを使用して、画像を投稿する Facebook ユーザー ID を取得します。

  3. そして、userId を取得したら、「MultiPart Request」を使用して画像を facebook にアップロードするだけです。以下は私のコードからのいくつかの重要なステートメントです(アクセストークンとユーザーIDを取得するためにサードパーティのAPI(app42)を使用したため、コード全体を共有していません)。

フェイスブックのURL:

String url = "https://graph.facebook.com/" + user_id + "/photos?access_token=" + accessToken;

バイト配列に格納された画像: バイト fileBytes[];

マルチパートリクエストで使用するHashTable(そのままコピーできます):

Hashtable params = new Hashtable();
params.put("custom_param", "param1");
params.put("custom_param2", "param2");

マルチパートリクエストを送信しているクラス

HttpMultipartRequest req = new HttpMultipartRequest(url, params, "upload_field", "original_filename.png", "image/png", fileBytes);

次のリンクを使用してマルチパート リクエストを参照できます http://www.developer.nokia.com/Community/Wiki/HTTP_Post_multipart_file_upload_in_Java_ME

作業が完了したら、Facebook のウォールに画像を投稿できたことを願っています。

幸せなコーディング..

于 2013-06-13T07:35:02.990 に答える
1

古い LWUIT facebook ログインは、facebook がログイン プロセスに変更を加えたため、適切に機能しなくなりました。

これは、現在の Facebook デモでの画像投稿もサポートしているCodename Oneでのみ機能します。

于 2012-08-09T16:21:00.670 に答える