3

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

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

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

facebook = new Facebook(APP_ID);

谁能帮我解决这个问题。

4

2 回答 2

2

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

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

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

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

希望这可以帮助!

于 2013-01-18T22:59:53.403 回答
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. 然后,您的应用程序将向用户显示照片权限屏幕以供批准。

于 2014-01-13T19:21:10.937 回答