Intereting Posts
Как Native Extension делает снимок экрана на устройстве Android? Как использовать андроиды поддержки Android в kotlin? Как отправлять электронные письма с большими вложениями с помощью API-интерфейсов gmail на Android OnClickListener – x, y местоположение события? Почему Proguard сохраняет класс активности в Android? Проблемы с рендерингом: java.lang.NullPointerException в android.support.v7.widget.RecyclerView в Android Studio 1.1.0 Где файл build.gradle, расположенный для моего проекта Android? Android cursor, как получить нулевые значения из столбцов OnTouchEvent () не будет запущен, если вызывается setSystemUiVisibility (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) Является ли Google Maps Android API v2 бесплатным? Ошибка Gradle Sync не удалось найти ограничение-макет: 1.0.0-alpha2 ANDROID: Как получить root-доступ в приложении для Android? Код кинжала, который дает NoClassDefFoundError при запуске Espresso Tests, нормально работает нормально работает Обнаружение, когда системные кнопки видны при использовании режима «immersive» Ограничения хранилища веб-SQL в Chrome и Android?

Как получить изображение профиля Facebook в Android

Я использую Facebook sdk 4.4.0 в android, и я хочу получить текущее изображение профиля пользователя, используя запрос графа. Как это сделать?

Я видел, что люди используют

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

API для извлечения изображения профиля, но я не могу понять, как извлечь из него изображение профиля.

Solutions Collecting From Web of "Как получить изображение профиля Facebook в Android"

Сначала вам нужно вызвать API GraphRequest для получения всех деталей пользователя, в котором API также дает URL-адрес текущего профиля.

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(); 

От последнего 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"); } 

Это можно сделать двумя способами.

Way1: интеграция поддержки графика api https://developers.facebook.com/docs/graph-api/reference/user/picture/

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

Где x и y могут быть любым целым числом, например 100

Получить его, позвонив

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

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(); } 

Если вы хотите действительно большой картины, вам придется специфицировать. По крайней мере один размер изображения – например.

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

Кроме того, вы можете указать оба размера (add & height = some_val), но затем facebook обрезает изображение этого профиля.

 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, как это в коде

 profilePictureView.setProfileId(facebookUserId);