在Android中如何添加user_photos权限以获取Facebook相册照片?

3
我正在使用Facebook Android SDK来访问用户的Facebook相册,然后获取照片。但是当我执行"https://graph.facebook.com/"+wallAlbumID+"/photos?access_token="+facebook.getAccessToken()时,它返回空数据。{ "data": [] } 我在StackOverflow问题和Graph API for Photo阅读到,我需要在创建Facebook对象时授予user_photos权限。但我不知道该怎么做。我阅读了很多论坛并在SOF上检查,但找不到解决方案。
这是我创建Facebook对象的方法:
facebook = new Facebook(APP_ID);

请问有人能帮我解决这个问题吗?

2个回答

2
你需要创建一个权限的ArrayList来访问它们。例如,在我声明变量时,这是我所做的事情。
private static final String[] PERMISSIONS = { "user_photos" };

接下来,当实现用户登录区域时:

if (!facebook.isSessionValid()) {
    facebook.authorize(this, PERMISSIONS, new LoginDialogListener());
}

希望这可以帮助你!

非常感谢您的回复。但是我现在遇到了错误 {"error":{"message":"Malformed access token AAAEAVpwLuvUBAMeXhXSNPr8TcuUA6DVspgM4ZA9tnJRKfgdvZA6ZAF8g1BZB3xXyzE7MnSh0cA6m1ulO7FgdZCwo9KhbEtc2udXws1wKAmAZDZD?access_token=AAAEAVpwLuvUBAMeXhXSNPr8TcuUA6DVspgM4ZA9tnJRKfgdvZA6ZAF8g1BZB3xXyzE7MnSh0cA6m1ulO7FgdZCwo9KhbEtc2udXws1wKAmAZDZD","type":"OAuthException","code":190}} 在创建Facebook实例时,我们应该提供哪个APP_ID? - namrathu1
@Namratha 当你在Facebook开发者网站上创建应用程序时,应该已经获得了一个应用程序ID。您可以使用该应用程序ID创建Facebook对象。 - RobStemen
@CreatineDevelopment:谢谢,我已经这样做了。但是我仍然继续收到错误。我已经在SOF上发布了一个不同的问题这里。再次感谢您的帮助。 - namrathu1
我没有看到isSessionValid()作为Session对象的方法...那是2.0的方式。在3.0中,你应该使用Session.isOpened()。 - IgorGanapolsky
@IgorGanapolsky 如果您提供更新的代码,我会相应地更新我的答案。由于我没有使用Facebook的3.0 API,所以不知道上下文。 - RobStemen

2
您需要使用Facebook SDK 3.0或以上版本,并在FB网站的开发者设置中启用OAuth客户端登录流程。然后您可以使用以下代码:
  1. First, log the user into FB inside of your app to get a Session object, then request permissions for user_photos if not granted yet:

    // start Facebook Login
    Session.openActiveSession(this, true, new Session.StatusCallback() {
    
        // callback when session changes state
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {
                // check for permission to see user photos
                if (!hasPhotoPermissions())
                    session.requestNewPublishPermissions(new Session.NewPermissionsRequest(MyActivity.this, "user_photos"));
    
                else {
                    // photos permission granted, fetch user's albums
                    fetchAlbumsFromFB(session);
                }
            }
        }
    });
    
  2. Here is what hasPhotoPermissions() method looks like:

    private boolean hasPhotoPermissions() {
        Session session = Session.getActiveSession();
        return session.getPermissions().contains("user_photos");
    }
    
  3. Your app will then present the photos permissions screen to the user for approval.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接