J'utilise Facebook sdk 4.4.0 dans Android et je souhaite obtenir la photo de profil actuelle de l'utilisateur à l'aide d'une requête graphique. Comment faire ça?
J'ai vu que les gens utilisent
https://graph.facebook.com/me/picture?access_token=ACCESS_TOKEN
API pour extraire une image de profil, mais je ne vois pas comment en extraire une.
Vous devez appeler l'API GraphRequest pour obtenir tous les détails de l'utilisateur dans lequel l'API donne également l'URL de la photo du profil actuel.
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();
Du dernier 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");
}
Vous pouvez avoir ceci de 2 manières différentes.
Way1: Intégrez le support des API graphiques 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
où x et y pourraient être n'importe quel entier, par ex. 100
Si vous voulez une très grande image, vous devrez spécifier. au moins une taille d'image - par ex.
String profileImg = "https://graph.facebook.com/" + loginResult.getAccessToken().getUserId() + "/picture?type=large&width=1080";
En outre, vous pouvez spécifier les deux tailles (add & height = some_val), mais Facebook recadrera cette image de profil.
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();
}
Obtenir une image de Facebook
String image_url = "http://graph.facebook.com/" + Profile.getCurrentProfile().getId() + "/picture?type=large";
Glide.with(activity)
.load(image_url)
.into(imageView);
dépendance
implementation 'com.github.bumptech.glide:glide:4.1.1'
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();
}
Appelez simplement cette URL:
graph.facebook.com/<facebook_user_id>/picture?type=large
le type peut être grand, normal ou petit.
Une autre méthode consiste à utiliser 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"/>
Après cela, vous pouvez définir l'identifiant facebook comme ceci dans le code
profilePictureView.setProfileId(facebookUserId);
image facebook
https://graph.facebook.com/ "+ facebookUid +"/picture? height = 9999 & redirect = 0 "
google Image
Chaîne googleEmailName = googleEmail.substring (0, googleEmailName.indexOf ("@"))
http://picasaweb.google.com/data/entry/api/user/ "+ googleEmailName +"? alt = json