【发布时间】:2013-11-19 17:03:46
【问题描述】:
当用户点击取消按钮时,它会关闭 facebook 会话。
Facebook 权限请求对话框:http://imgur.com/2PiYGrK
我正在尝试从用户在 Facebook 权限请求对话框中点击“取消”时显然已关闭的会话请求权限。当我尝试在没有 requestNewReadPermissions 的情况下打开 ActiveSession 时,只请求基本权限,但是当我这样做时,我收到此错误:
E/AndroidRuntime(12619): java.lang.UnsupportedOperationException:Session: 尝试为已关闭的会话请求新权限。
以下代码取自 Facebook SDK v3.5.2 LoginUsingActivityActivity.java 示例,我只是添加了:
Session.NewPermissionsRequest request = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewReadPermissions(request);
代码如下:
private static final List<String> PERMISSIONS = Arrays.asList("user_birthday", "user_friends","user_hometown","user_location","email");
private void onClickLogin() {
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(PERMISSIONS));
} else {
Session.openActiveSession(this, true, statusCallback);
Session.NewPermissionsRequest request = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewReadPermissions(request);
}
}
我正在寻找解决方案,显然我必须销毁当前会话并创建一个新会话。这行得通,但我认为这是一个糟糕的代码。还有另一种方法可以重新打开会话并请求新权限吗?
private void onClickLogin() {
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(PERMISSIONS));
} else {
session.closeAndClearTokenInformation();
session = null;
session = new Session(this);
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(PERMISSIONS));
}
}
【问题讨论】:
标签: java android facebook session