【问题标题】:SERVER_ERROR: [code] 1675030 [message]: Error performing querySERVER_ERROR:[代码] 1675030 [消息]:执行查询时出错
【发布时间】:2017-06-11 05:19:44
【问题描述】:

我在 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:[代码] 1675030 [消息]:执行查询时出错。 [额外]:执行操作“ProxyAuthAppLoginQuery”时出错:在 Query.proxy_auth_app_login:解析字段失败。 W/System.err:
在 com.facebook.login.LoginManager.onActivityResult(LoginManager.java:190) W / System.err:在 com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:159) W / System.err:在 com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:82) W / System.err:在 com.procibernetica.moca.MainActivity.onActivityResult(MainActivity.java:130) W / System.err:在 android.app.Activity.dispatchActivityResult(Activity.java:5423) W / System.err:在 android.app.ActivityThread.deliverResults(ActivityThread.java:3401) W / System.err:在 android.app.ActivityThread.handleSendResult(ActivityThread.java:3448) W / System.err:在 android.app.ActivityThread.access$1300(ActivityThread.java:138) W / System.err:在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) W / System.err:在 android.os.Handler.dispatchMessage(Handler.java:102) W/System.err:
在 android.os.Looper.loop(Looper.java:149) W/System.err: 在 android.app.ActivityThread.main(ActivityThread.java:5061) W/System.err:在 java.lang.reflect.Method.invokeNative(Native 方法)W / System.err:在 java.lang.reflect.Method.invoke(Method.java:515) W/System.err: 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) W / System.err:在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) W/System.err:在 dalvik.system.NativeStart.main(Native Method)

我已添加以下权限。

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

【问题讨论】:

  • 我有同样的问题,如果您找到任何解决方案,请自行回答您的问题。
  • 我也有同样的问题。看来问题出在Facebook本身..
  • 尝试重新检查您的 Facebook APP ID
  • 这些解决方案都没有解决我的问题:(
  • 正如登录时底部的评论所说,您应该添加基本应用权限“email”、“public_profile”、“user_friends”

标签: java android facebook facebook-login


【解决方案1】:

对于 Flutter,这是解决方法

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

【讨论】:

    【解决方案2】:

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

    在您的面板应用中输入 选择角色

    并添加测试用户,当您尝试使用测试用户登录时,应用程序执行不会失败

    【讨论】:

    • 值得注意的是,需要这样做的原因是因为您的应用处于“开发模式”(请参阅​​“应用审查”面板上的设置)。开发模式应用程序被认为是私有的,只能由特别授权的用户使用。将应用程序公开会消除此限制,因此可以替代列出您想要访问的用户。
    • 这在我的情况下不起作用,但得到相同的异常。你能帮忙吗?我添加了测试人员,现在使用测试人员帐户登录。还是一样的异常
    • 另一种解决方案是将app设置为public,按照@AMAN SINGH的回复,刷新token
    • 我已经发布了我的应用程序,但我看到了同样的错误。我还仔细检查以确保我的 App ID 正确
    • @Gabriel 您是否设法解决了这个问题?我提出了同样的问题。我已经发布了我们的应用程序,但仍然会发生这种情况。
    【解决方案3】:

    您需要查看在手机facebook应用中连接的用户是否是在应用页面的facebook开发者中拥有测试或开发者权限的用户。

    【讨论】:

      【解决方案4】:

      试试这个,在 android build 文件夹中找到你的 app-debug.apk

      keytool -printcert -jarfile app-debug.apk | openssl sha1 -binary | openssl base64
      

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

      【讨论】:

        【解决方案5】:

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

        switch to live mode

        "从左上角到应用 ID"

        【讨论】:

        • 我的应用无法切换,它显示消息为“您可能无法让所有用户都可以使用您的应用”
        【解决方案6】:

        我不知道这是否会有所帮助,但根据个人经验,当您生成开发密钥时,您需要输入“android”密码,并确保在字段中添加代码时在代码后添加 =在开发者 facebook 域上

        【讨论】:

          【解决方案7】:

          我遇到了类似的问题,因为 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>
          ...
          

          【讨论】:

          • 这就是为我解决这个问题的原因。文档中似乎缺少它。
          • 这是对具有 FirebaseUI 依赖项的应用的修复。尝试编译应用程序时,将显示一条错误消息,提示此解决方案。
          • 请问“tools:replace”从何而来?
          【解决方案8】:

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

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

          【讨论】:

          • 我是否需要启用以上所有权限 facebook 开发者帐户?还是自动启用?
          • 在我的帐户中,它只有 public_profile 和 email 作为它的权限。但如果我使用它,它会显示未支持的请求。你确定,我需要确定所有上述三个权限吗?
          • 您可以尝试在开发者帐户上启用上述所有权限,可能对您有用。
          • 如果我不启用以上三个并且只添加两个权限是否有效?
          • 我得到了一些错误的用户界面
          【解决方案9】:

          问题日志:SERVER_ERROR:[code] 1675030 [message]:执行查询时出错

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

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

          图片参考

          问题日志:应用程序未设置。此应用程序仍处于开发模式。而且您无权访问它。注册测试用户或向应用管理员申请权限

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

          如何切换到直播模式
          1. 转至:https://developers.facebook.com
          2. 在“我的应用程序”列表中选择您的应用程序
          3.将开关从OFF切换到ON

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

          7. 个人资料 > 请求 > 确认
          8. 恭喜您已被指定为新管理员

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

          如何获取 hashKey 的分步过程。

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

          2. 运行应用程序并在 Logcat 中搜索 KeyHash

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

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

          2. 按照以下步骤操作。

          【讨论】:

          • 那么这三个权限也需要在Facebook开发者账户的应用审核中启用?我对么? 1. 我的应用程序加载并显示执行查询的错误。添加电子邮件和 user_friends,public_profile 后,它会在 UI 中显示应用程序未设置错误。重新申诉后会解决这个问题吗?
          【解决方案10】:

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

          手动检查密钥散列 - 您可以打印发送到 Facebook 的密钥散列并在 App Dashboard 中使用该值。在您的主要活动中对 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) {  
          
          }
          

          【讨论】:

            【解决方案11】:

            在我的情况下,生成的哈希密钥是错误的,因为我使用了错误的 OpenSSL。 我使用的是 openssl-0.9.8k_X64.zip 而不是 openssl-0.9.8e_X64.zip,这为我生成了一个错误的哈希键,导致了这个问题,希望它可以帮助我失去了 8 个小时试图解决这个问题的人。

            【讨论】:

              【解决方案12】:

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

              【讨论】:

                【解决方案13】:

                以上所有答案都没有帮助我,当你使用这个命令时做了什么

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

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

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

                【讨论】:

                • 这为我解决了!我已经从 strings.xml 更改了应用程序 ID,并做了许多其他建议的答案。非常感谢。
                【解决方案14】:

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

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

                【讨论】:

                • 谢谢,这个解决方案对我有用,上面标记为正确的解决方案不起作用。如果这与使用自定义登录 Facebook 相关,我不这样做,这意味着在我的应用程序中,我将 fbk 登录按钮更改为 android 按钮。没关系它有效
                • 对我也有用,但让我想知道是否需要所有三个读取权限,为什么 Facebook 官方文档只提到“电子邮件”权限?
                • 感谢它在我省略了user_friends后对我有用
                • @liorko 您的评论自相矛盾,您表示感谢并说您省略了 user_friends,请澄清
                • @AkshayVijayJain 这行对我有用:loginButton.setReadPermissions("email", "public_profile")
                【解决方案15】:

                在您的 strings.xml 中添加一个字符串资源“facebook_application_id”

                将 APP_ID 替换为您的 Facebook 应用 ID

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

                【讨论】:

                  【解决方案16】:

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

                  【讨论】:

                    【解决方案17】:

                    @Danial 回答正确,但我想在其中添加更多内容。此类错误仅在您正在开发的应用程序中出现。关注此link 并选择您的应用程序。然后你可以在这里做两件事。在角色选项卡中,您可以只允许您的朋友登录,或者选择App Review并设置您的app public,然后任何人都可以登录。

                    【讨论】:

                      【解决方案18】:

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

                      仔细检查您的

                      &lt;meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/&gt;

                      正在解析为正确的 Facebook 应用 ID,尤其是如果您使用 gradle build 动态指定它,而不是在 strings.xml 中硬编码。

                      【讨论】:

                        猜你喜欢
                        • 2022-07-31
                        • 2021-06-27
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2016-01-11
                        • 1970-01-01
                        相关资源
                        最近更新 更多