Как получить изображение профиля Facebook в Android
Я использую Facebook sdk 4.4.0 в android, и я хочу получить текущее изображение профиля пользователя, используя запрос графа. Как это сделать?
Я видел, что люди используют
https://graph.facebook.com/me/picture?access_token=ACCESS_TOKEN
API для извлечения изображения профиля, но я не могу определить, как извлечь из него изображение профиля.
Ответы
Ответ 1
Сначала вам нужно вызвать 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();
Ответ 2
Из последнего 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");
}
Ответ 3
Это можно сделать двумя способами.
Way1: интеграция поддержки графика 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
Ответ 4
Если вы хотите действительно большой картины, вам придется специфицировать. хотя бы один размер изображения - например,
String profileImg = "https://graph.facebook.com/" + loginResult.getAccessToken().getUserId() + "/picture?type=large&width=1080";
Кроме того, вы можете указать оба размера (add & height = some_val), но тогда facebook обрезает изображение этого профиля.
Ответ 5
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();
}
Ответ 6
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();
}
Ответ 7
Получить изображение из Facebook
String image_url = "http://graph.facebook.com/" + Profile.getCurrentProfile().getId() + "/picture?type=large";
Glide.with(activity)
.load(image_url)
.into(imageView);
зависимость
compile 'com.github.bumptech.glide:glide:4.1.1'
Ответ 8
Просто назовите этот 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);
Ответ 9
facebook image
https://graph.facebook.com/ "+ facebookUid +" /picture? height = 9999 & redirect = 0"
Изображение google
String googleEmailName = googleEmail.substring(0, googleEmailName.indexOf( "@" ))
http://picasaweb.google.com/data/entry/api/user/ "+ googleEmailName +"? alt= json