当前位置: 首页 > 知识库问答 >
问题:

Facebook 登录不再有效,因为我将 Firebase 应用程序升级到了新的控制台(仅限)

酆鸿彩
2023-03-14

我有一个使用Facebook的应用程序

Firebase 3.0之前的html" target="_blank">应用程序版本以前是有效的,但在控制台升级后,它不再能够登录Facebook。

我所做的:

1-升级了Firebase控制台

因为火基

2 - 将火库脸书OAuth回调粘贴到脸书控制台(无效之前)“https://xxx.firebaseapp.com/__/auth/handler”

例外情况:

firebase身份验证侦听器触发Firebase错误:

提供的身份验证凭据无效。和Facebook:{"ProviderErrorInfo":{"code": 400,"message":"来自Facebook的debug_token响应不成功:{\"error\":{\"message\":\"(#100)您必须提供应用访问令牌或应用所有者或开发者的用户访问令牌\",\"type\":\"OAuthException\",\"code\": 100,\"fbtrace_id\":\"DG4lLRJHFBS\"}}"}}

Firebase错误代码:

在FirebaseAndroidSdk的反编译代码中,错误对象为:

0={java.util.LinkedHashMap$LinkedEntry@22680}“代码”-

1 = {java.util.LinkedHashMap$LinkedEntry@22681} “消息” -

2={java.util.LinkedHashMap$LinkedEntry@22682}"细节"-

使用反编译的代码:

private void makeAuthenticationRequest(String urlPath, Map<String, String> params, AuthResultHandler handler) {
    final AuthenticationManager.AuthAttempt attempt = this.newAuthAttempt(handler);
    this.makeRequest(urlPath, HttpRequestType.GET, params, Collections.emptyMap(), new RequestHandler() {
        public void onResult(Map<String, Object> result) {
            Object errorResponse = result.get("error");
            String token = (String)Utilities.getOrNull(result, "token", String.class);
            if(errorResponse == null && token != null) {
                if(!AuthenticationManager.this.attemptHasBeenPreempted(attempt)) {
                    AuthenticationManager.this.authWithCredential(token, result, attempt);
                }
            } else {
                FirebaseError error = AuthenticationManager.this.decodeErrorResponse(errorResponse);
                AuthenticationManager.this.fireAuthErrorIfNotPreempted(error, attempt);
            }

        }

        public void onError(IOException e) {
            FirebaseError error = new FirebaseError(-24, "There was an exception while connecting to the authentication server: " + e.getLocalizedMessage());
            AuthenticationManager.this.fireAuthErrorIfNotPreempted(error, attempt);
        }
    });
}

在身份验证程序级别,火基错误代码: -20

https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/FirebaseError.html

指定的身份验证凭据无效。

Facebook错误代码:

代码400

这里没有找到任何相关内容: https://developers.facebook.com/docs/graph-api/using-graph-api/#errors

认证代码:

    public void authWithFirebase(final String provider, Map<String, String> options) {
        if (options.containsKey(AUTH_OPTIONS_ERROR)) {
            EventBus.getDefault().post(new MessageToDisplayEvent(options.get(AUTH_OPTIONS_ERROR), true));
        } else {
            if (provider.equalsIgnoreCase(AUTH_PROVIDER_TWITTER)) {
                // if the provider is twitter, we must pass in additional options, so use the options endpoint
                ref.authWithOAuthToken(provider, options, new AuthResultHandler(provider));
            } else {
                // if the provider is not twitter, we just need to pass in the oauth_token
                ref.authWithOAuthToken(provider, options.get(AUTH_OPTIONS_TOKEN), new AuthResultHandler(provider));
            }
        }
    }

令牌有效期:

根据上面的代码,令牌被确认为有效,因为:

https://graph.facebook.com/app?access_token={your_access_token}返回有效的JSON

脸书工具访问令牌 https://developers.facebook.com/tools/debug/accesstoken 返回一个仍然有效的令牌

从用户的角度来看发生了什么变化:

我在Firebase上发布了一个bug报告,但我甚至不知道这是Facebook还是Firebase,欢迎为探索新的问题表面或解决方案提供任何帮助和建议。


共有1个答案

秦新立
2023-03-14

在 Facebook 开发工具控制台中,关闭有关“集成在客户端中的应用密钥”的选项。

对我来说,这改变了行为。我会提供更多从Firebase/Facebook获得的信息。

这是一个法语截图,以帮助您设置脸书:

 类似资料:
  • 我的OpenShift 4.5. x安装中的控制台用户界面神秘地停止工作。现在访问控制台URL会导致消息: 应用程序不可用 应用程序当前未在此终结点处为请求提供服务。它可能尚未启动或仍在启动。 如果路由存在但找不到相应的服务或pod,通常会看到这一点,但在这种情况下,路由存在: 该服务存在: 豆荚存在并且健康: 查看控制台pods的日志,联系oauth服务似乎有问题: 但是 命名空间中的 pod

  • 我和你一样在检查东西,在facebook上发现了这个有趣的东西。 我理解,这完全可以通过类似的方式实现: 来源 我的主要问题是,他们如何阻止在控制台中总是显示在右边的.js:line_numer文件的显示? 你注意到红色的圆圈了吗?但是以facebook为例,他们不显示这些信息。我在网上找过了。Mozilla上的控制台API(链接),那么有人可能知道如何排除特定的信息吗?

  • 我有一个使用Visual Studio 2010/C#编写的控制台应用程序 我通过属性添加了一个图标-

  • 控制台运行在具有nova-dashboard这一服务器角色的节点上。 向这个云服务的管理员咨询能登录控制台的主机名,IP地址,账号和密码。 打开一个启用了JavaScript和Cookies的浏览器。 注意: 如果要使用VNC客户端,你的浏览器需要支持HTML5 Canvas和HTML5 WebSockets。VNC浏览器基于noVNC。详情请查阅noVNC: HTML5 VNC Client。想

  • 我正在迁移一个遗留的应用程序来使用logback,在这个过程中我试图保持所有的旧功能以相同的方式工作。遗留应用程序所做的一件事是,如果无法写入日志文件(由于空间不足、权限不正确等原因),则将日志记录到控制台 对于logback,似乎应该由StatusListener来处理这个问题,我可以使用getOrigin获得筛选后的附加程序,但我不知道如何获得与origin附加程序相关联的日志记录程序。有可能

  • 从Symfony 4升级到最新的Symfony 5版本后,我尝试升级我的注册和登录表单保护功能,使其成为验证器功能。 在尝试了很多东西,并一次又一次地使用和命令后,我现在处于一个没有警告,没有错误的情况下,只是当我试图登录时,什么都没有发生:没关系无论用户名/密码组合是否正确,我只是回到登录表单。 以下是我认为可能与该问题相关的文件: 配置/包/security.yaml src/Controll