【问题标题】:Open session of Facebook, on token without a window (web dialog) authorization在没有窗口(网络对话)授权的令牌上打开 Facebook 会话
【发布时间】:2014-04-27 10:38:34
【问题描述】:

提示如何正确使用Fasebook API中的openActiveSessionWithAccessToken()方法。授权通过,获取token,发起对话发帖,出现(我可以发帖)。清理令牌和关闭会话后,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);
            }
        }
    });

}

【问题讨论】:

    标签: android facebook session dialog facebook-access-token


    【解决方案1】:

    您被删除了之前的会话,那么您将如何获得访问权限。您需要重新登录。如果你想保持会话,那么只需使用 UiLifecycleHelper

    【讨论】:

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

    我是通过这样的 createFromString 方法做到的:

    AccessToken accessToken = AccessToken.createFromString(savedTokenAsString, facebookPermissions, AccessTokenSource.NONE); Session.openActiveSessionWithAccessToken(context, accessToken, new Session.StatusCallback() { @覆盖 公共无效调用(会话会话,会话状态状态,异常异常){} });

    但您需要将 createFromString 方法设为 public,因为它在 facebook sdk 中是 package-private

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2021-10-17
      相关资源
      最近更新 更多