我的profile.getFirstName()工作正常,但是当我尝试profile.getProfilePictureUri(64,64)时,它返回null对象。我使用loginButton.setReadPermissions(" user_friends")作为权限。
修改 我的错误,profile.getProfilePictureUri没有返回null,而是返回图形api的图像url。但我仍然无法将从该网址转换的位图设置为个人资料图片。
我正在使用的代码
URL img_value = null;
try {
img_value = new URL(""+profile.getProfilePictureUri(64,64));
} catch (MalformedURLException e) {
e.printStackTrace();
}
Bitmap mIcon1=null;
try {
mIcon1 = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
imageView.setImageBitmap(mIcon1);
logcat的
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
答案 0 :(得分:3)
Facebook有这个功能的观点。
<com.facebook.login.widget.ProfilePictureView
android:id="@+id/profilePicture"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="10dp"
facebook:com_facebook_preset_size="normal"
android:layout_gravity="center_horizontal" />
要传递的唯一参数是profileId
profileImage = (ProfilePictureView) findViewById(R.id.profilePicture);
profileImage.setProfileId(profile.getId());
答案 1 :(得分:1)
您好我想分享一个代码,我可以获得Facebook个人资料图片如下:
public static Bitmap getFacebookProfilePicture(String userID){
URL imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large");
Bitmap bitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
return bitmap;
}
您可以使用返回的GraphUser对象获取Facebook用户ID。
Bitmap bitmap = getFacebookProfilePicture(userId);
请回复反馈如果您在使用代码时有任何疑问或错误。
答案 2 :(得分:1)
您可以使用Glide以圆形ImageView:
加载您的脸谱资料图片 if(Profile.getCurrentProfile()!=null){
Uri url= Profile.getCurrentProfile().getProfilePictureUri(128,128);
Glide.with(this)
.load(url)
.thumbnail(Glide.with(this).load(R.drawable.loader))
.apply(RequestOptions.circleCropTransform())
.into(((ImageView)findViewById(R.id.profile_pic)) );
}
答案 3 :(得分:0)
使用profile.getProfilePictureUri
时我也遇到了类似的问题。
URI即将到来,但图片未按预期设置。
我的解决方案如下:
我使用了square/picasso library.Link
:https://github.com/square/picasso
它易于集成,功能强大。
一旦合并,只需使用以下功能:
Picasso.with(context).load(url).into(img);
希望这有帮助!
答案 4 :(得分:-1)
您有以下两种方法,您可以根据这两种方法获得图形用户对象,并且能够获得用户ID,如下所示:
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
onSessionStateChange(session, state, exception);
}
};
private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
Log.i("access token", "Access Token" + session.getAccessToken());
Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Log.d("session", "callback ma ayu...");
if (user != null) {
//Here You got the User Id as user.getId(); and used //this id further
Log.i("USER BIRTHDAY ", "" + user.getBirthday());
updateUI();
}
}
});
}
}