web-dev-qa-db-ja.com

AndroidでFacebookプロフィール画像を取得する方法

Facebook SDK 4.4.0をAndroidで使用しています。グラフリクエストを使用して、ユーザーの現在のプロフィール写真を取得します。

私は人々が使用することを見てきました

https://graph.facebook.com/me/picture?access_token=ACCESS_TOKEN

プロフィール写真を抽出するためのAPIですが、そこからプロフィール写真を抽出する方法はわかりません。

13
anupam x

APIが現在のプロフィール画像のURLも提供するユーザーのすべての詳細を取得するには、GraphRequest APIを呼び出す必要があります。

Bundle params = new Bundle();
params.putString("fields", "id,email,gender,cover,picture.type(large)");
new GraphRequest(AccessToken.getCurrentAccessToken(), "me", params, HttpMethod.GET,
        new GraphRequest.Callback() {
            @Override
            public void onCompleted(GraphResponse response) {
                if (response != null) {
                    try {
                        JSONObject data = response.getJSONObject();
                        if (data.has("picture")) {
                            String profilePicUrl = data.getJSONObject("picture").getJSONObject("data").getString("url");
                            Bitmap profilePic= BitmapFactory.decodeStream(profilePicUrl .openConnection().getInputStream());
                            mImageView.setBitmap(profilePic);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
}).executeAsync();
56
Rajesh

最後のSDK 4.5.0から

 String url;
 Bundle parametersPicture = new Bundle();
 parametersPicture.putString("fields", "picture.width(150).height(150)");

 GraphResponse lResponsePicture = new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/",
                        parametersPicture, null).executeAndWait();
 if (lResponsePicture != null && lResponsePicture.getError() == null &&
                            lResponsePicture.getJSONObject() != null) {
     url = lResponsePicture.getJSONObject().getJSONObject("picture")
                                .getJSONObject("data").getString("url");
 }
16
Dmitriy Puchkov

Facebookから画像を取得

String image_url = "http://graph.facebook.com/" + Profile.getCurrentProfile().getId() + "/picture?type=large";
Glide.with(activity)
     .load(image_url)
     .into(imageView);

依存

implementation 'com.github.bumptech.glide:glide:4.1.1'
4

これは2つの異なる方法で行うことができます。

方法1:グラフAPIサポートの統合 https://developers.facebook.com/docs/graph-api/reference/user/picture/

Way2:Get Call経由http:// graph.facebook.com/{facebook-Id}/picture?width=x&height=y

ここで、xおよびyは任意の整数です。 100

3
Faizan Tariq

本当に大きな画像が必要な場合は、スペックを指定する必要があります。画像の少なくとも1つのサイズ-例。

String profileImg = "https://graph.facebook.com/" + loginResult.getAccessToken().getUserId() + "/picture?type=large&width=1080";

また、両方のサイズを指定できます(&height = some_valを追加)が、facebookはこのプロフィール画像をトリミングします。

3
Anton Kizema

protected void rajendra(LoginButton login_button){

    login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult login_result) {
            GraphRequest request = GraphRequest.newMeRequest(
                    login_result.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,
                                GraphResponse response) {

                            response.getError();

                            try {
                                if (Android.os.Build.VERSION.SDK_INT > 9) {
                                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                                    StrictMode.setThreadPolicy(policy);
                                    String profilePicUrl = object.getJSONObject("picture").getJSONObject("data").getString("url");

                                    URL fb_url = new URL(profilePicUrl);//small | noraml | large
                                    HttpsURLConnection conn1 = (HttpsURLConnection) fb_url.openConnection();
                                    HttpsURLConnection.setFollowRedirects(true);
                                    conn1.setInstanceFollowRedirects(true);
                                    Bitmap fb_img = BitmapFactory.decodeStream(conn1.getInputStream());
                                    image.setImageBitmap(fb_img);
                                }
                            }catch (Exception ex) {
                                ex.printStackTrace();
                            }
                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,picture");
            request.setParameters(parameters);
            request.executeAsync();
        }
2
rajendra
try {
String fbId="970463683015249";
URL fb_url = new URL("http://graph.facebook.com/"+fbId+"/picture?type=small");//small | noraml | large
HttpsURLConnection conn1 = (HttpsURLConnection) fb_url.openConnection();
HttpsURLConnection.setFollowRedirects(true);
conn1.setInstanceFollowRedirects(true);
Bitmap fb_img = BitmapFactory.decodeStream(conn1.getInputStream());
}catch (Exception ex) {
  ex.printStackTrace();
  }

このURLを呼び出すだけです:

graph.facebook.com/<facebook_user_id>/picture?type=large

タイプは大きく、通常、または小さくできます。

別の方法は、 ProfilePictureView を使用することです

<com.facebook.login.widget.ProfilePictureView
    Android:id="@+id/image"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerInParent="true"
    facebook:preset_size="small"/>

その後、コードでこのようにfacebook idを設定できます

profilePictureView.setProfileId(facebookUserId);
0
Malwinder Singh

フェイスブック画像

https://graph.facebook.com/ "+ facebookUid +"/picture?height = 9999&redirect = 0 "

googleの画像

文字列googleEmailName = googleEmail.substring(0、googleEmailName.indexOf( "@"))

http://picasaweb.google.com/data/entry/api/user/ "+ googleEmailName +"?alt = json

0
HongSec Park