在Android中如何添加user_photos权限来获取facebook专辑照片?

时间:2013-01-18 22:47:57

标签: java android facebook facebook-graph-api

我正在使用facebook android sdk访问用户的脸书专辑和实习生获取照片。 但是当我执行"https://graph.facebook.com/"+wallAlbumID+"/photos?access_token="+facebook.getAccessToken()时,它会返回空白数据。 { "data": [] }

我在阅读in stackoverflow question以及in Graph API for Photo时,我需要在创建facebook对象时给予user_photos权限。 我不知道该怎么做。我阅读了很多论坛,并检查了SOF,但找不到解决方案。

这就是我创建facebook对象的方式

facebook = new Facebook(APP_ID);

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:2)

您需要创建要访问的ArrayList个权限。例如,当我这样做时,在声明变量时。

private static final String[] PERMISSIONS = { "user_photos" };

然后,在实现用户登录区域时:

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

希望这有帮助!

答案 1 :(得分:2)

您需要使用Facebook SDK 3.0+。此外,在FB站点的开发人员设置中启用 OAuth客户端登录流程。然后您可以使用以下代码:

  1. 首先,将用户登录到应用程序内部的FB以获取Session对象,如果尚未授权,则请求user_photos的权限:

    // 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. 以下是 hasPhotoPermissions()方法:

    private boolean hasPhotoPermissions() {
        Session session = Session.getActiveSession();
        return session.getPermissions().contains("user_photos");
    }
    
  3. 然后,您的应用会将照片权限屏幕显示给用户以供审批。