根据 Facebook SDK 的文档,您请求照片的代码很好,但是我认为您忘记向登录的用户(在本例中为您)请求许可。
从 Facebook SDK 文档复制:A user access token with user_photos permission is required to see all photos that person is tagged in or has uploaded.
以下链接为您提供了有关如何将访问令牌添加到登录按钮的小教程:https://developers.facebook.com/docs/android/login-with-facebook/v2.2?locale=en_GB#step3 https://developers.facebook.com/docs/android/login-with-facebook/v2.2?locale=en_GB#step3
在你的情况下,它会是(代码片段仅适用于活动,适用于片段:单击上面的网址并按照那里的教程进行操作。非常简单):
...
LoginButton authButton = (LoginButton) findViewById(R.id.ID_OF_YOUR_LOGIN_BUTTON);
authButton.setReadPermissions(Arrays.asList("user_photos"));
...
在您的重写 onCreate 方法中。
方法二:
...
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this)
.setPermissions(Arrays.asList("user_photos"))
.setCallback(YOUR_CALLBACK_CLASS_VARIABLE));
} else {
// Open an active session. Basically happens when someone is already logged in.
}
...
在调用请求所有用户照片之前,您只需在用户尚未登录时打开一个新请求即可。这可能发生在View.OnClickListener
类的一个Button
看来您不是 Facebook 的 LoginButton。
YOUR_CALLBACK_CLASS_VARIABLE
是你的类实现Session.StatusCallback。我非常确定您知道它是什么以及它的作用。
方法三:
...
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, Arrays.asList("user_photos"));
session.requestNewReadPermissions(newPermissionsRequest);
...
当用户已经登录时(所以用户登录后)并且您希望向用户请求额外的权限以访问他的照片或其他内容。顺便说一句,这一切都写在 Facebook SDK for Android 的文档中。
了解更多信息:https://developers.facebook.com/docs/android/login-with-facebook/v2.2?locale=en_GB#step3 https://developers.facebook.com/docs/android/login-with-facebook/v2.2?locale=en_GB#step3