我正在尝试在 Android 应用程序中获得我的阅读和发布权限,它第一次在网络对话框中完美运行。下一次授权成功后,它说你已经授权了两次对话。
这是创建会话对象的代码。
Session session = Session.getActiveSession();
if(session == null){
session = new Session.Builder(HomeActivity.this).setApplicationId(MyTouchTunesApplication.getSettings().getFacebookAppId()).build();
Session.setActiveSession(session);
}else{
Util.clearFacebookToken();
}
if(!session.isOpened() && !session.isClosed()){
ArrayList<String> permissions = new ArrayList<String>();
permissions.add("email");
session.openForRead(new Session.OpenRequest(HomeActivity.this).setCallback(statusCallback).setPermissions(permissions));
}else{
Session.setApplicationId(MyTouchTunesApplication.getSettings().getFacebookAppId());
Session.openActiveSession(HomeActivity.this, true, statusCallback);
}
我的回调方法
public void call(Session session, SessionState state, Exception exception) {
Log.d("session state", state.toString());
if(exception != null){
if(!exception.getMessage().contains("user")){
showError(exception.getMessage());
return;
}
}
if(session.isOpened() && state == SessionState.OPENED && !session.getPermissions().contains("publish_stream")){
final String[] PERMISSION_ARRAY_PUBLISH = {"publish_stream"};
final List<String> permissionList = Arrays.asList(PERMISSION_ARRAY_PUBLISH);
session.requestNewPublishPermissions(new NewPermissionsRequest(HomeActivity.this,permissionList ));
return;
}
if(session !=null && session.isOpened() && state == SessionState.OPENED_TOKEN_UPDATED){
mLoginCommand = new LoginCommand(HomeActivity.this, fbloginHandler, null, null, session.getAccessToken(), String.valueOf(session.getExpirationDate().getTime()));
mLoginCommand.execute();
}
}
当用户在授权应用程序后登录时,我没有获得所有权限,它只返回电子邮件权限,这就是为什么我的情况在 Statuscallback 中被打破。我必须收到电子邮件并一一发布,当用户发布状态时不能这样做。我对此实施表示怀疑,希望对此有所帮助
谢谢。