Facebook SDK 4.4.0をAndroidで使用しています。グラフリクエストを使用して、ユーザーの現在のプロフィール写真を取得します。
私は人々が使用することを見てきました
https://graph.facebook.com/me/picture?access_token=ACCESS_TOKEN
プロフィール写真を抽出するためのAPIですが、そこからプロフィール写真を抽出する方法はわかりません。
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();
最後の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");
}
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'
これは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
本当に大きな画像が必要な場合は、スペックを指定する必要があります。画像の少なくとも1つのサイズ-例。
String profileImg = "https://graph.facebook.com/" + loginResult.getAccessToken().getUserId() + "/picture?type=large&width=1080";
また、両方のサイズを指定できます(&height = some_valを追加)が、facebookはこのプロフィール画像をトリミングします。
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();
}
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);
フェイスブック画像
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