我正在尝试使用 Facebook Android SDK v3.0 升级现有的应用程序/框架,但我坚持如何使用额外权限进行身份验证。
问题是如果用户取消,StatusCallback 似乎不会触发。Session.openActiveSession
如果我在取消时使用对回调的常规调用,但Session.OpenRequest
在新对象上使用新Session
对象则不会。
这是我的代码:
Session.OpenRequest auth = new Session.OpenRequest(this);
String[] permissions = {"publish_stream", "user_status"};
auth.setPermissions(Arrays.asList(permissions));
auth.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
auth.setCallback(new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
switch(state) {
case OPENING:
System.out.println("OPENING");
break;
case OPENED: // <-- NOT CALLED
System.out.println("OPENED");
break;
case CREATED: // <-- NOT CALLED
System.out.println("CREATED");
break;
case CREATED_TOKEN_LOADED: // <-- NOT CALLED
System.out.println("CREATED_TOKEN_LOADED");
break;
case OPENED_TOKEN_UPDATED: // <-- NOT CALLED
System.out.println("OPENED_TOKEN_UPDATED");
break;
case CLOSED: // <-- NOT CALLED
System.out.println("CLOSED");
break;
case CLOSED_LOGIN_FAILED: // <-- NOT CALLED
System.out.println("CLOSED_LOGIN_FAILED");
break;
}
}
});
Session session = new Session.Builder(this).setApplicationId("<My APP ID>").build();
session.openForPublish(auth);
这会在设备上生成如下视图:
http://cl.ly/image/0E2C0t2m2b0g
(未安装 FB 应用程序)。如果用户单击关闭按钮(左上角),则不会触发回调。
如果我Session.openActiveSession
在相同的场景中使用回调,则会触发。
这是一个错误,还是我做错了什么?
谢谢!