Facebook SDK 4.0.1 profile.getProfilePictureUri 在 android 中返回 null
Facebook SDK 4.0.1 profile.getProfilePictureUri returning null in android
我的 profile.getFirstName() 运行良好,但每当我尝试 profile.getProfilePictureUri(64,64) 时,它都会返回空对象。我正在使用 loginButton.setReadPermissions("user_friends") 这作为许可。
编辑
我的错误是,profile.getProfilePictureUri 没有返回 null,而是返回图 api 的图像 url。但我仍然无法设置从 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)
你好,我想分享一个代码,我可以使用它获得 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 = getFacebookProfilePicture(userId);
如果您在使用代码时有任何疑问或错误,请回复反馈。
您有以下两种方法,基于这些方法您获得了 Graph User 的对象并能够获取用户 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();
}
}
});
}
}
我在使用 profile.getProfilePictureUri
时也遇到了类似的问题。
URI 来了,但图片没有按预期设置。
我的解决方法如下:
我使用了 square/picasso library.Link
: https://github.com/square/picasso
它易于集成且功能极其强大。
合并后,只需使用以下功能即可:
Picasso.with(context).load(url).into(img);
希望对您有所帮助!
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());
您可以使用 Glide 以圆形 ImageView 加载您的 facebook 头像:
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)) );
}
我的 profile.getFirstName() 运行良好,但每当我尝试 profile.getProfilePictureUri(64,64) 时,它都会返回空对象。我正在使用 loginButton.setReadPermissions("user_friends") 这作为许可。
编辑 我的错误是,profile.getProfilePictureUri 没有返回 null,而是返回图 api 的图像 url。但我仍然无法设置从 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)
你好,我想分享一个代码,我可以使用它获得 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 = getFacebookProfilePicture(userId);
如果您在使用代码时有任何疑问或错误,请回复反馈。
您有以下两种方法,基于这些方法您获得了 Graph User 的对象并能够获取用户 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();
}
}
});
}
}
我在使用 profile.getProfilePictureUri
时也遇到了类似的问题。
URI 来了,但图片没有按预期设置。
我的解决方法如下:
我使用了 square/picasso library.Link
: https://github.com/square/picasso
它易于集成且功能极其强大。
合并后,只需使用以下功能即可:
Picasso.with(context).load(url).into(img);
希望对您有所帮助!
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());
您可以使用 Glide 以圆形 ImageView 加载您的 facebook 头像:
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)) );
}