Facebook 登录注销在尝试再次登录时出现无效密钥哈希错误

2023-11-26

我有一个简单的 Facebook 登录/注销活动,运行成功。

然而,在我从应用程序注销后,我尝试再次登录,但 facebook 给出了无效的密钥哈希错误。

请注意,我第一次登录并注销成功,但在我注销并尝试再次登录后,Facebook 给出了该错误。应该做什么?

感谢您的关注。

这是我的代码:

public class MainFragment extends Fragment {

private static final String TAG = MainFragment.class.getSimpleName();

private UiLifecycleHelper uiHelper;

private final List<String> permissions;

public MainFragment() {
    permissions = Arrays.asList("user_status");
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    uiHelper = new UiLifecycleHelper(getActivity(), callback);
    uiHelper.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_main, container, false);

    LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
    authButton.setFragment(this);
    authButton.setReadPermissions(permissions);

    return view;
}

@Override
public void onResume() {
    super.onResume();

    // For scenarios where the main activity is launched and user
    // session is not null, the session state change notification
    // may not be triggered. Trigger it if it's open/closed.
    Session session = Session.getActiveSession();
    if (session != null &&
           (session.isOpened() || session.isClosed()) ) {
        onSessionStateChange(session, session.getState(), null);
    }

    uiHelper.onResume();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}

private void onSessionStateChange(Session session, SessionState state,
        Exception exception) {
    if (state.isOpened()) {
        Log.i(TAG, "Logged in...");
    } else if (state.isClosed()) {
        if (Session.getActiveSession() != null) {
            Session.getActiveSession().closeAndClearTokenInformation();
        } 

        Session.setActiveSession(null);

        Log.i(TAG, "Logged out...");
    }
}

private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        onSessionStateChange(session, state, exception);
    }
};

}


假设您已经将 keyhash 添加到您的 Facebook 应用程序中。

确保在“设置”->“Android”中。在“类名称”字段中,您的第一个活动是所有包。 例子: com.yourcompany.yourapp.MyFirstActivity

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook 登录注销在尝试再次登录时出现无效密钥哈希错误 的相关文章

随机推荐

  • 用于目录遍历的任务并行库

    我想遍历硬盘上的目录并在所有文件中搜索特定的搜索字符串 这听起来像是可以 或应该 并行完成的事情的完美候选者 因为 IO 相当慢 传统上 我会编写一个递归函数来查找并处理当前目录中的所有文件 然后递归到该目录中的所有目录 我想知道如何修改它
  • 使用 XSD 验证 XML

    我在验证 XML 时遇到了真正的困难XSD 我应该在所有这些前面加上前缀 并预先声明 我是 XSD 和验证的新手 所以我不确定这是代码问题还是 XML 问题 我经历过 XML API 的地狱 并带着无数不同的选项回来 我认为我已经找到了使用
  • 防止基类的序列化

    我觉得我应该知道这一点 但出于某种原因 序列化从 可能是抽象 基类派生的类而不必一直序列化到树上的首选方法是什么 例如 也许您无法控制派生的类 但希望使用序列化来克隆您的对象 仅克隆您的对象 而不是基础对象 例如 This is a bas
  • 如何在 bash 脚本的批处理文件的参数中包含管道字符?

    我有一个 shell 脚本 我想执行这一行 qtvars bat vsstart qt sln BUILD Debug Win32 This works fine though I had to modify qtvars bat but
  • 如何模拟低带宽、高延迟环境? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要模拟与服务器的低带宽 高延迟连接 以便模拟远程站点的 VPN 条件 带宽和延迟应该是可调整的 这样我就可以找到运行我们的软件包的最佳组合 For macOS there i
  • 自定义 git 命令自动完成

    我通过编写位于以下位置的 shell 脚本实现了自定义 git 命令 usr local bin 它工作正常 但我希望脚本在命令行中自动完成分支 就像git checkout TAB TAB 这怎么可能做到呢 编辑 只需添加一些上下文 gi
  • 在 Rust 中对字符串进行分区

    Rust 中是否有一种机制可以将字符串划分为等长度元素的列表 子字符串或元组 字符数组 我想要一个字符串 abcdefghijkl 并将其分成一个列表 例如 ab cd ef gh ij kl 我不需要手动查看执行此操作的方法 我只是想知道
  • python:如何从 HKLM 中删除注册表项(和子项)(出现错误 5)

    我正在尝试通过 python 脚本删除某些注册表项 我从 HKEY CURRENT USER 读取和删除键没有问题 但尝试从 HKEY LOCAL MACHINE 执行相同操作 给我带来了可怕的WindowsError 错误 5 访问被拒绝
  • 在自定义视图/uiview子类上实现iphone的复制/粘贴控件

    我承认 在 S O 上已经有一个完全符合这些思路的问题 但它缺乏实现细节 有效的答案 而且我想更具体 所以我认为应该提出一个新问题 显然 如果我错了 请告诉我 我们可以尝试重新启动那里的线程 基本上 当用户按住标签时 我想将 UILabel
  • 通过 HTTPS 使用 Web 服务时抛出 System.Net.WebException

    当使用 HTTPS 调用服务器上运行的 Web 服务时 我的应用程序抛出 System Net WebException 并显示消息 底层连接已关闭 无法与远程服务器建立信任关系 我不确定如何解决此问题并成功拨打电话 经过一番研究 我发现了
  • gcc: printf 和 long double 会导致错误的输出。 [C - 类型转换混乱]

    我对 C 相当陌生 我尝试为 Vector 编写函数 但一定有问题 这是代码 Defines maths for particles include
  • 使用ant或Eclipse编译时出现多个dex文件错误

    我无法构建我的应用程序 我正在运行今天下载的最新构建工具 这种情况在更新后开始发生 dex dex Converting compiled files and external libraries into Users rob Repos
  • 查看 Maven 工件上的 PGP 签名

    我想手动验证来自 Central 的 Maven 工件上的 PGP 签名 但我不知道从哪里开始 我在 Apache 上看到将工件上传到中央存储库的指南它说 我们要求您为所有工件提供 PGP 签名 我看到 Sonatype 的 Nexus P
  • Xamarin - 将命令绑定到用户控件内对象的属性

    几天前我开始学习 XAML 但我很难解决这个问题 在 Xamarin Forms 中 我想创建一个用户控件 其中包含一个标签和一个按钮 并且能够从使用我的用户控件的另一个页面将命令绑定到 XAML 中的用户控件 我目前遇到异常 Xamari
  • 在 ng-repeat 期间添加引导行

    我有一种情况 我有一个要在各个面板中显示的数据列表 使用 Bootstrap 的网格系统 我想利用宽屏幕并水平显示多个面板 但在窄屏幕上让它们堆叠 我目前正在使用这样的 ejs 在服务器端布局 列作为查询参数传入 通常设置为 2 或 3 因
  • Map的keySet()和entrySet()的性能考虑

    All 谁能告诉我两者之间的性能问题到底是什么 网站 代码牧场简要概述了使用 keySet 和 get 时所需的内部调用 但如果任何人都可以提供有关使用 keySet 和 get 方法时流程的准确详细信息 那就太好了 这将帮助我更好地理解性
  • 导致此异常的原因 java.lang.RuntimeException: java.lang.NoSuchMethodException: [class android.view.View]

    我的方法有问题firebase项目 我按照以下步骤操作firebaseGitHub 文档 但我遇到了这个异常 java lang RuntimeException java lang NoSuchMethodException
  • 用于 GADT 的 makeLenses (Haskell)

    是否有相当于makeLenses对于 GADT 如果我有一个简单的GADT like data D a b where D Ord a Ord b gt a gt b gt D a b 有没有办法通过传入构造函数和字段名称列表来自动生成镜头
  • Interface Builder 中 UIButton 的活力效果

    我的一个视图控制器中有一些模糊且充满活力的视觉效果视图 我的标签可以正常工作 充满活力 但每次我尝试向视图添加 UIButton 时 文本似乎是透明的 并且按钮的背景似乎有活力 我正在寻找 编辑 按钮在通知中心的效果 我附上了一些照片供参考
  • Facebook 登录注销在尝试再次登录时出现无效密钥哈希错误

    我有一个简单的 Facebook 登录 注销活动 运行成功 然而 在我从应用程序注销后 我尝试再次登录 但 facebook 给出了无效的密钥哈希错误 请注意 我第一次登录并注销成功 但在我注销并尝试再次登录后 Facebook 给出了该错