SERVER_ERROR: [code] 1675030 [message]: Error performing query

SERVER_ERROR: [code] 1675030 [message]: Error performing query

我在 android 中使用 Facebook 登录。
代码:

callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton) this.findViewById(R.id.login_button);
    loginButton.setReadPermissions("email", "public_profile");
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
            Log.println(Log.ASSERT, "FB", "inicio session ");
        }

        @Override
        public void onCancel() {
            Log.println(Log.ASSERT, "FB", "OP NO completada");
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            Log.println(Log.ASSERT, "FB", " Errro de sesion ");
            exception.printStackTrace();
            // App code
        }
    });

但总是出现以下错误:

SERVER_ERROR: [code] 1675030 [message]: Error performing query. [extra]: Errors while executing operation "ProxyAuthAppLoginQuery": At Query.proxy_auth_app_login: Failed to resolve field. W/System.err:
at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:190) W/System.err: at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:159) W/System.err: at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:82) W/System.err: at com.procibernetica.moca.MainActivity.onActivityResult(MainActivity.java:130) W/System.err: at android.app.Activity.dispatchActivityResult(Activity.java:5423) W/System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:3401) W/System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:3448) W/System.err: at android.app.ActivityThread.access00(ActivityThread.java:138) W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) W/System.err:
at android.os.Looper.loop(Looper.java:149) W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5061) W/System.err: at java.lang.reflect.Method.invokeNative(Native Method) W/System.err: at java.lang.reflect.Method.invoke(Method.java:515) W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) W/System.err: at dalvik.system.NativeStart.main(Native Method)

我添加了以下权限。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

我找到了解决方案,当您的应用程序中没有评估用户时会发生这种情况。

进入你的面板App Select 滚

并添加测试用户,当您尝试使用测试用户登录时,应用程序执行无误

@Danial 回答正确,但我想补充一些。只有当您的应用程序正在开发中时才会出现此类错误。按照这个 link 和 select 你的应用程序。然后你可以在这里做两件事。在 角色 选项卡中,您可以只允许登录您的朋友,否则 select 应用评论 然后让您的 app public任何人都可以登录。

在其他情况下也会返回此错误 - 即使您的应用 public 或者您被列为测试人员。

仔细检查您的

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

正在解析为正确的 Facebook 应用程序 ID,特别是如果您使用 gradle 构建动态指定它,而不是在 strings.xml.

中对其进行硬编码

我遇到了类似的问题,因为 Firebase UI 指定了 android:value。我是这样解决的:

    <application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.Base">

    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        tools:replace="android:value"
        android:value="@string/facebook_app_id" />
<acitivity
...
</activity>
...

我除了其他答案外,还请检查用于登录的帐户的电子邮件是否已验证。

facebook 上的文档不正确。我必须添加所有 3 个默认权限才能使其正常工作。

loginButton.setReadPermissions("email", "public_profile", "user_friends");

在您的 strings.xml

中添加一个字符串资源 "facebook_application_id"

将 APP_ID 替换为您的 Facebook 应用程序 ID

<string name="facebook_application_id" translatable="false">APP_ID</string>

以上所有答案都对我没有帮助,当你使用这个命令时才帮到我

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

获取您在 facebook 配置中输入的密钥哈希。

它会要求你输入密码,一开始我没有设置任何密码,所以当我输入 android 作为密码时,问题就发生了。成功了!

Live developer mode 请检查开发者模式的状态。必须是 "Live"。 首先,您需要为自己的 facebook 项目添加隐私 url,您想要测试 facebook 登录或......然后启用开发者模式(打开)

在我的例子中,生成的散列键是错误的,因为我使用了错误的 OpenSSL。 我使用的是 openssl-0.9.8k_X64.zip 而不是 openssl-0.9.8e_X64.zip ,这为我生成了一个错误的散列键,导致了这个问题希望它能帮助一些我迷失了 8 小时试图解决这个问题的人.

在我的案例中,问题是生成的密钥哈希错误,需要在 facebook 应用程序页面上提交 在这篇文章中找到的解决方案 https://developers.facebook.com/docs/facebook-login/android/advanced

手动检查密钥哈希 - 您可以打印出发送到 Facebook 的密钥哈希并在应用面板中使用该值。在主 activity:

中对 onCreate() 进行此更改
try 
{
    PackageInfo info = getPackageManager().getPackageInfo(
                        "com.facebook.samples.loginhowto",
                        PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
} catch (NameNotFoundException e) {  


} catch (NoSuchAlgorithmException e) {  

}

Issue Log: SERVER_ERROR: [code] 1675030 [message]: Error performing query

针对此特定问题的准确解决方案执行查询时出错
@aloha 回答是通过更新访问查询。
loginButton.setReadPermissions("email", "public_profile", "user_friends");

  1. 查找调用 Facebook 登录按钮的位置。
  2. 然后设置按钮的ReadPermission为"email", "public_profile", "user_friends"

图片参考

Issue Log: App Not Setup. This app is still in development mode. and you dont have access to it. register test user or ask an app admin for permission

  1. 该应用未处于实时模式
  2. 您未在
    https://developers.facebook.com/app/yourapp
  3. 中列为管理员或测试人员
  4. 您的 App Hashkey 未设置。如果 Facebook 应用程序不能处于实时模式,您需要一个哈希键来测试它。因为该应用程序尚未上线。 Facebook 不允许访问。

如何更改为实时模式
1. 前往:https://developers.facebook.com
2. select 您的应用在“我的应用”列表
3. 将开关从 OFF 切换到 ON

如何添加为测试或管理员
1. 前往:https://developers.facebook.com
2. select 您的应用在“我的应用”列表
3. 转到:角色 > 角色 > 按添加,例如管理员 4. 搜索您的新 admin/tester Facebook 帐户。
5.管理员必须输入facebook密码才能confirm.then提交
新管理员必须转到 developer.facebook 页面并接受请求
6. 转到:https://developers.facebook.com

7. 配置文件 > 请求 > 确认
8. 恭喜您已被任命为新管理员

如何为开发获取和设置 HASKEY
参考 Facebook 登录文档
https://developers.facebook.com/docs/android/getting-started/#create_hash
我最喜欢的解决方案是通过代码(Troubleshooting Sample Apps
它将打印出哈希键。你可以更新它
https://developers.facebook.com/apps/yourFacebookappID/settings/basic/
Android > 密钥哈希 部分

关于如何获取 hashKey 的分步过程。

  1. 首先将代码添加到任何oncreate方法

  2. 运行 应用程序并在 Logcat

    处搜索 KeyHash

关于如何在 Facebook 开发者上更新的分步过程。

  1. 打开 Facebook 开发者页面。您需要访问权限才能更新 Facebook 开发者页面:https://developers.facebook.com

  2. 按照以下步骤操作。

我刚刚添加了这一行,它对我有用。

facebookLogin.setReadPermissions("email", "public_profile", "user_friends");

我不知道这是否有帮助,但根据个人经验,当您生成开发密钥时,您需要输入密码 "android" 并确保在添加时在代码后添加 =它在开发人员 facebook 域的领域

我刚刚通过 https://developers.facebook.com/apps/ 修复了它 然后 select 我的应用

switch to live mode

“从应用 ID 左上角开始”

试试这个,在 android 构建文件夹

中找到你的 app-debug.apk
keytool -printcert -jarfile app-debug.apk | openssl sha1 -binary | openssl base64

将其粘贴到 facebook 密钥哈希中。

您需要查看在 phone facebook 应用程序中连接的用户是否是在应用程序页面上的 facebook 开发人员中具有测试或开发人员权限的用户。

对于 Flutter,这是修复

final LoginResult result = await FacebookAuth.instance.login(
      permissions: [
        'public_profile',
        'email',
        'pages_show_list',
        'pages_messaging',
        'pages_manage_metadata'
      ],
    );