SERVER_ERROR:[code] 1675030 [message]:执行查询

时间:2017-01-25 21:00:52

标签: java android facebook facebook-login

我在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]:执行查询时出错。   [extra]:执行操作“ProxyAuthAppLoginQuery”时出错:At   Query.proxy_auth_app_login:无法解析字段。 W / System.err的:
  在   com.facebook.login.LoginManager.onActivityResult(LoginManager.java:190)   W / System.err:at   com.facebook.login.LoginManager $ 1.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.access $ 1300(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:
  在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   方法)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"/>

16 个答案:

答案 0 :(得分:48)

我找到了解决方案,当您的应用中没有评估用户时,会附加此解决方案。

在面板App中输入 选择Rol

enter image description here

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

enter image description here

答案 1 :(得分:25)

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

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

答案 2 :(得分:20)

@Danial回答正确,但我想补充一些。这种类型的错误仅在应用程序正在开发中时出现。按照此link并选择您的应用。那你可以在这做两件事。在角色标签中,您只允许登录您的朋友,或者选择应用评论并制作您的app public,然后任何人都可以登录。

答案 3 :(得分:14)

我遇到了类似问题,因为Firebase用户界面指定了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>
...

答案 4 :(得分:10)

以上所有答案对我没有帮助,使用此命令时是什么

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

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

它将要求您输入密码,最初我没有设置密码,所以当我输入android作为密码时,问题就发生了。它起作用了!

答案 5 :(得分:3)

在我的情况下,生成的哈希密钥是错误的,因为我使用的是错误的OpenSSL。 我使用的是openssl-0.9.8k_X64.zip而不是openssl-0.9.8e_X64.zip,这给我生成了一个错误的哈希密钥,从而导致了此问题,希望它可以帮助一些我迷失了大约8个小时的人来弄清楚这个问题。

答案 6 :(得分:3)

就我而言,问题是错误生成的密钥哈希,需要在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) {  

}

答案 7 :(得分:2)

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

仔细检查你的

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

正在解析为正确的Facebook App ID,特别是如果您使用gradle构建动态指定它,而不是在strings.xml中对其进行硬编码。

答案 8 :(得分:2)

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

答案 9 :(得分:1)

添加字符串资源&#34; facebook_application_id&#34;在你的strings.xml中

将APP_ID替换为您的Facebook应用ID

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

答案 10 :(得分:1)

  

问题日志: SERVER_ERROR:[代码] 1675030 [消息]:执行查询时出错

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

  1. 查找调用Facebook登录按钮的位置。
  2. 然后将按钮的ReadPermission设置为“电子邮件”,“ public_profile”,“ user_friends”

图片参考

enter image description here

  

问题日志:应用未设置。这个应用程式仍处于开发模式。而且您无权访问。注册测试用户或向应用程序管理员寻求许可

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

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

enter image description here enter image description here

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

 7.个人资料>请求>确认
enter image description here  List item  8. 恭喜您,您已被分配为新管理员

如何获取和设置用于开发的Hashkey
请参阅Facebook登录文档
https://developers.facebook.com/docs/android/getting-started/#create_hash
我最喜欢的解决方案是通过代码(示例应用程序进行故障排除
它会打印出哈希键。你可以更新
https://developers.facebook.com/apps/yourFacebookappID/settings/basic/
Android>哈希值部分

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

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

    enter image description here

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

    enter image description here

逐步介绍如何在Facebook Developer上进行更新。

  1. 打开Facebook开发人员页面。您需要访问权限来更新Facebook Developer页面:https://developers.facebook.com

  2. 按照以下步骤进行操作。

    enter image description here

答案 11 :(得分:1)

我只是通过转到https://developers.facebook.com/apps/来解决它 然后选择我的应用

switch to live mode

“在应用ID左上角”

答案 12 :(得分:1)

尝试一下,在android build文件夹中找到您的app-debug.apk

//img[@alt = "Purple - Los Angeles"]

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

答案 13 :(得分:1)

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

答案 14 :(得分:0)

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

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

答案 15 :(得分:0)

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