Android 未经窗口(web对话)授权,在令牌上打开Facebook会话

Android 未经窗口(web对话)授权,在令牌上打开Facebook会话,android,facebook,session,dialog,facebook-access-token,Android,Facebook,Session,Dialog,Facebook Access Token,提示如何正确使用Fasebook API中的方法openActiveSessionWithAccessToken()。授权通行证,获取令牌,并启动对话发布,它出现了(我可以发布)。清理令牌和关闭的会话后,closeAndClearTokenInformation()方法试图打开一个先前已收到令牌的会话,会话打开后,会出现一个对话,但遗憾的是,写入了一个错误,请稍后再试 在对话框中,将显示: 发生了一个错误。请稍后再试 并在日志中给出一个错误: 错误代码110, 错误描述:无效的用户id, 错误消

提示如何正确使用Fasebook API中的方法
openActiveSessionWithAccessToken()
。授权通行证,获取令牌,并启动对话发布,它出现了(我可以发布)。清理令牌和关闭的会话后,
closeAndClearTokenInformation()
方法试图打开一个先前已收到令牌的会话,会话打开后,会出现一个对话,但遗憾的是,写入了一个错误,请稍后再试

在对话框中,将显示: 发生了一个错误。请稍后再试

并在日志中给出一个错误: 错误代码110, 错误描述:无效的用户id, 错误消息:缺少用户cookie(用于验证会话用户)

代码如下:

public static void migrateFbTokenToSession() {
        AccessToken accessToken = AccessToken.createFromExistingAccessToken(getAccessToken(), new Date(getAccessExpires()), null, AccessTokenSource.FACEBOOK_APPLICATION_NATIVE, Arrays.asList(Constants.FB_APP_PERMISSIONS));
    Session.openActiveSessionWithAccessToken(getContext(), accessToken , new Session.StatusCallback() {

        @Override
        public void call(Session session, SessionState state, Exception exception) {
                       if(session != null && session.isOpened()) {
                Session.setActiveSession(session);
            }
        }
    });

}

您已在会话前被删除,因此您将如何获得访问权限。您需要再次登录。如果要维护会话,只需使用UiLifecycleHelper

我使用createFromString方法实现了这一点,如下所示:

AccessToken accessToken = AccessToken.createFromString(savedTokenAsString, facebookPermissions, AccessTokenSource.NONE); Session.openActiveSessionWithAccessToken(context, accessToken, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { } }); AccessToken AccessToken=AccessToken.createFromString(savedTokenAsString、facebookPermissions、AccessTokenSource.NONE); Session.openActiveSessionWithAccessToken(上下文、accessToken、新会话.StatusCallback(){ @凌驾 公共无效调用(会话、会话状态、异常){} });
但是您需要将createFromString方法设置为公共的,因为它在facebook sdk中的包是私有的。

您在会话之前就被删除了,所以您将如何获得访问权限。您需要再次登录。如果您想维护会话,那么只需使用UiLifecycleHelper。我的想法是我不能只开一节课。如果用户已经通过了一次授权,下一次我就不必向他显示授权窗口。这是因为应用程序是多用户的,同时在墙上发送记录。每个用户都可以,如果我记得单个用户的会话,其他用户将无法向墙上发送记录,因为他的会话不会被披露。因此,请清除令牌信息。并为新用户调用openactive会话。Session=Session.getActiveSession();session.closeAndClearTokenInformation();但这样会出现一个新的用户登录窗口。但我保留了每个通过身份验证的用户的早期令牌,通过对话框,现在只想目标用户打开一个会话,以便再次访问该用户,没有输入您的详细信息(电子邮件和密码)。我认为这是不可能的。因为每个用户都有自己的会话。但是为什么需要一个方法openActiveSessionWithAccessToken()?在ios上,我不认为android是不真实的。