更新facebook android会话权限而无需注销和再次登录

更新facebook android会话权限而无需注销和再次登录,android,facebook,session,facebook-graph-api,permissions,Android,Facebook,Session,Facebook Graph Api,Permissions,我正在为Android应用程序使用Facebook SDK,除了标准的登录/注销权限外,还需要2个权限。 这两个权限是读取权限:用户组和发布权限:发布 问题是,在最新的facebook api中,需要分别请求每个权限。我对此很满意 问题是,除非我注销并再次登录应用程序,否则在用户确认新权限后,会话对象不会更新为新权限 如果我可以一次请求所有权限,这将不是一个问题,但同样,不再可能 有没有其他方法可以避免这种情况 是的,我已经尝试了OnActivityResult中的所有操作,并且会话中的权限。g

我正在为Android应用程序使用Facebook SDK,除了标准的登录/注销权限外,还需要2个权限。 这两个权限是读取权限:用户组和发布权限:发布

问题是,在最新的facebook api中,需要分别请求每个权限。我对此很满意

问题是,除非我注销并再次登录应用程序,否则在用户确认新权限后,会话对象不会更新为新权限

如果我可以一次请求所有权限,这将不是一个问题,但同样,不再可能

有没有其他方法可以避免这种情况

是的,我已经尝试了OnActivityResult中的所有操作,并且会话中的权限。getActiveSession()对象不会用新权限更新,即使我尝试执行所需的操作,它也会起作用

在每次权限请求之后,要求用户注销并登录应用程序是完全不可行的

这就是我在OnActivityResult中的内容(顺便说一句,它工作得非常好)

我的第一个想法是不使用Session.getPermissions().contains(“此处需要权限”)来实际在线检查权限,而不是Session对象

现在它只是进入了一个循环:

权限已检查=>权限不在那里=>跳转到facebook应用程序请求权限=>用户授予它=>应用程序再次检查权限(即使用户已确认权限也不在那里)并跳转到facebook(当然,facebook只会回复已确认的权限)它们无限地来回跳舞

除了在线检查权限而不是检查对象,您还有其他想法吗?

引用

用户组-有限使用

此权限授予在Facebook尚未可用的平台上构建Facebook品牌客户端的应用程序。例如,Android和iOS应用程序将不会获得此权限的批准。此外,Web、桌面和电视应用程序将不被授予此权限

以及用于检查是否已授予权限

    private static final String PERMISSION = "publish_actions";

    <- Whatever read permissions you need ->
            authButton.setReadPermissions(Arrays.asList("email", "user_birthday",
                    "read_stream", "user_friends","read_friendlists "));

    public void call(Session session, SessionState state,
                    Exception exception) {

                    if (session.isOpened()) {

                        List<String> permissions = session.getPermissions();
                        if (!permissions.contains(PERMISSION)) {
                            pendingAnnounce = true;
                            requestPublishPermissions(session);
                            return;
                        }
}
private static final String PERMISSION=“publish\u actions”;
authButton.setReadPermissions(Arrays.asList(“电子邮件”、“用户生日”),
“阅读流”、“用户好友”、“阅读好友列表”);
公共无效调用(会话、会话状态、,
例外情况(例外情况){
if(session.isOpened()){
List permissions=session.getPermissions();
如果(!permissions.contains(PERMISSION)){
pendingAnnounce=真;
请求发布权限(会话);
返回;
}
}

我不知道这对你有多大帮助。

谢谢你的回复。这不是问题。我有权限。这正是我现在获取权限的方式。问题是,在用户授予权限后,再次运行此方法,在会话对象中,权限不会用新的和已确认的更新如果我退出并再次登录应用程序,权限就在那里,一切正常。
    private static final String PERMISSION = "publish_actions";

    <- Whatever read permissions you need ->
            authButton.setReadPermissions(Arrays.asList("email", "user_birthday",
                    "read_stream", "user_friends","read_friendlists "));

    public void call(Session session, SessionState state,
                    Exception exception) {

                    if (session.isOpened()) {

                        List<String> permissions = session.getPermissions();
                        if (!permissions.contains(PERMISSION)) {
                            pendingAnnounce = true;
                            requestPublishPermissions(session);
                            return;
                        }
}