4

タイトルはわかりやすいと思います。私のアプリケーションには、ログインフォームがあります。リクエストに基づいて、ユーザーはFacebookを介してプロフィールの画像を設定できる必要があります。

だから、私の質問は、アプリケーション内のユーザーのギャラリー画像を表示し、ユーザーがそこから画像を選択できるようにすることは可能ですか?

Facebook SDKをチェックしてゴーグルもしましたが、見つけた情報は、グラフによるFacebookへの画像のアップロードに基づいていました。

任意の提案/コメントをいただければ幸いです。

4

1 に答える 1

0

ここでこの答えを確認しましたか:

ImageView user_picture;
 userpicture=(ImageView)findViewById(R.id.userpicture);
 URL img_value = null;
 img_value = new URL("http://graph.facebook.com/"+id+"/picture?type=large");
 Bitmap mIcon1 = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
 userpicture.setImageBitmap(mIcon1);

あなたもこれを見るかもしれません。

編集:

これはアルバムをロードするために機能すると思いますが、唯一の違いは、このユーザーがaccess tokenfacebookにログインしている場合にのみ、ユーザーのアルバムを取得できることを意味します。.JSONをフェッチすると、以前に定義されたリストビューにアルバムがロードされていることがわかります。AsyncTaskgetAlbumsDatadoInBackgroundonPostExecute

これが(単純な)サンプルコードです

private class getAlbumsData extends AsyncTask<Void, Void, Void> {

    LinearLayout linlaHeaderProgress = (LinearLayout) findViewById(R.id.linlaHeaderProgress);

    @Override
    protected void onPreExecute() {

        // SHOW THE PROGRESS BAR (SPINNER) WHILE LOADING ALBUMS
        linlaHeaderProgress.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackground(Void... params) {

        // CHANGE THE LOADING MORE STATUS TO PREVENT DUPLICATE CALLS FOR
        // MORE DATA WHILE LOADING A BATCH
        loadingMore = true;

        // SET THE INITIAL URL TO GET THE FIRST LOT OF ALBUMS
        URL = "https://graph.facebook.com/" + initialUserID
                + "/albums&access_token="
                + Utility.mFacebook.getAccessToken() + "?limit=10";

        try {

            HttpClient hc = new DefaultHttpClient();
            HttpGet get = new HttpGet(URL);
            HttpResponse rp = hc.execute(get);

            if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                String queryAlbums = EntityUtils.toString(rp.getEntity());

                JSONObject JOTemp = new JSONObject(queryAlbums);

                JSONArray JAAlbums = JOTemp.getJSONArray("data");

                if (JAAlbums.length() == 0) {
                    stopLoadingData = true;
                    Runnable run = new Runnable() {

                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(),
                                    "No more Albums", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    };
                    Albums.this.runOnUiThread(run);

                } else {
                    // PAGING JSONOBJECT
                    if (JOTemp.has("paging"))   {
                        JSONObject JOPaging = JOTemp.getJSONObject("paging");

                        if (JOPaging.has("next")) {
                            String initialpagingURL = JOPaging
                                    .getString("next");

                            String[] parts = initialpagingURL.split("limit=10");
                            String getLimit = parts[1];

                            pagingURL = "https://graph.facebook.com/"
                                    + initialUserID + "/albums&access_token="
                                    + Utility.mFacebook.getAccessToken()
                                    + "?limit=10" + getLimit;

                        } else {
                            stopLoadingData = true;
                            Runnable run = new Runnable() {

                                @Override
                                public void run() {
                                    Toast.makeText(getApplicationContext(),
                                            "No more Albums",
                                            Toast.LENGTH_SHORT).show();
                                }
                            };
                            Albums.this.runOnUiThread(run);
                        }
                    } else {
                        stopLoadingData = true;
                        Runnable run = new Runnable() {

                            @Override
                            public void run() {
                                Toast.makeText(getApplicationContext(),
                                        "No more Albums",
                                        Toast.LENGTH_SHORT).show();
                            }
                        };
                        Albums.this.runOnUiThread(run);

                    }

                    getAlbums albums;

                    for (int i = 0; i < JAAlbums.length(); i++) {
                        JSONObject JOAlbums = JAAlbums.getJSONObject(i);

                        if (JOAlbums.has("link")) {

                            albums = new getAlbums();

                            // GET THE ALBUM ID
                            if (JOAlbums.has("id")) {
                                albums.setAlbumID(JOAlbums.getString("id"));
                            } else {
                                albums.setAlbumID(null);
                            }

                            // GET THE ALBUM NAME
                            if (JOAlbums.has("name")) {
                                albums.setAlbumName(JOAlbums
                                        .getString("name"));
                            } else {
                                albums.setAlbumName(null);
                            }

                            // GET THE ALBUM COVER PHOTO
                            if (JOAlbums.has("cover_photo")) {
                                albums.setAlbumCover("https://graph.facebook.com/"
                                        + JOAlbums.getString("cover_photo")
                                        + "/picture?type=normal"
                                        + "&access_token="
                                        + Utility.mFacebook
                                                .getAccessToken());
                            } else {
                                albums.setAlbumCover("https://graph.facebook.com/"
                                        + JOAlbums.getString("id")
                                        + "/picture?type=album"
                                        + "&access_token="
                                        + Utility.mFacebook
                                                .getAccessToken());
                            }

                            // GET THE ALBUM'S PHOTO COUNT
                            if (JOAlbums.has("count")) {
                                albums.setAlbumPhotoCount(JOAlbums
                                        .getString("count"));
                            } else {
                                albums.setAlbumPhotoCount("0");
                            }

                            arrAlbums.add(albums);
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        // SET THE ADAPTER TO THE LISTVIEW
        lv.setAdapter(adapter);

        // CHANGE THE LOADING MORE STATUS
        loadingMore = false;

        // HIDE THE PROGRESS BAR (SPINNER) AFTER LOADING ALBUMS
        linlaHeaderProgress.setVisibility(View.GONE);
    }

}

さらにヘルプが必要な場合は、元の回答を調べてください。それでも、説明付きの完全に機能するソースコードが必要です。これは、私が参照した回答よりも少し混乱します。Inshallah、これでクエリが解決します。

于 2013-03-06T04:35:01.053 に答える