Java Android哈希代码不匹配:实际设备上出现onFacebookError,应用程序在emulator上运行

Java Android哈希代码不匹配:实际设备上出现onFacebookError,应用程序在emulator上运行,java,android,facebook,facebook-graph-api,Java,Android,Facebook,Facebook Graph Api,提前感谢您的时间和关注 我的android应用程序使用facebook sdk在模拟器上运行得很好,但我在三星Galaxy S1和S2设备上都得到了onFacebookError()。我希望我也能向您提供更详细的错误输出信息,但我目前手头没有这些设备来调试它们,并检查adb logcat出了什么问题。我知道onFacebookError()方法正在运行,因为我放在那里的一个Toast显示“onFacebookError” 在我找到这些手机并调查错误并将它们发布到这里之前,有人曾经遇到过这个问题吗

提前感谢您的时间和关注
我的android应用程序使用facebook sdk在模拟器上运行得很好,但我在三星Galaxy S1和S2设备上都得到了onFacebookError()。我希望我也能向您提供更详细的错误输出信息,但我目前手头没有这些设备来调试它们,并检查adb logcat出了什么问题。我知道onFacebookError()方法正在运行,因为我放在那里的一个Toast显示“onFacebookError”
在我找到这些手机并调查错误并将它们发布到这里之前,有人曾经遇到过这个问题吗?当我在这里搜索这个问题时,我读到有人认为这是因为这些设备上安装了官方的facebook应用程序。这与此相关吗?
敬酒e.getMessage()以获取如下错误详细信息:

@Override
            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub
                //Toast.makeText(MemoFriendActivity.this, "fbError", Toast.LENGTH_SHORT).show();
                Toast.makeText(MemoFriendActivity.this, "MSG: "+e.getMessage()+ " CODE: "+e.getErrorCode(), Toast.LENGTH_LONG).show();

            }
在S2设备上显示此消息:“MSG:ivalid_key:Android key不匹配。您的密钥“XXX”与应用程序设置中指定的允许密钥不匹配。请检查代码为0的应用程序设置”


代码:


My.Util.fb是一个静态Facebook对象。同样,此代码在模拟器上工作。有人知道如何在设备上解决这个问题吗?我希望我能很快在设备上找到它并与大家分享。

如果你能在设备上看到一个吐司,那么请吐司值
e.getMessage()
,以查看更详细的错误报告。

好的,我自己得到了答案。这是安卓键的不匹配。当从设备而不是模拟器运行应用程序时,您需要将开发PC上的哈希键替换为手机上的某个应用程序的哈希键,您可以从e.getMsg的输出中获得该哈希键,如我在这里所示。从您的设备获取密钥,并在facebook.com/developers中将其设置为新哈希。如果你想让应用程序在手机和PC上都能运行,你也可以在你的PC上添加这个哈希键。希望这对其他人有所帮助

public void onClick(View v) {
    // TODO Auto-generated method stub
    if (MyUtil.fb.isSessionValid())
    {
        //button close session - log out of facebook
        try {
            MyUtil.fb.logout(getApplicationContext());
            updateGuiAccordingToState();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
    else
    {
        //login to facebook
        MyUtil.fb.authorize(this, new DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub
                Toast.makeText(MemoFriendActivity.this, "fbError", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onError(DialogError e) {
                // TODO Auto-generated method stub
                Toast.makeText(MemoFriendActivity.this, "OnError", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(Bundle values) {
                // TODO Auto-generated method stub
                Editor editor = sp.edit();
                editor.putString("access_token", MyUtil.fb.getAccessToken());
                editor.putLong("access_expires", MyUtil.fb.getAccessExpires());
                editor.commit();
                getUsername();
                updateGuiAccordingToState();
            }

            @Override
            public void onCancel() {
                // TODO Auto-generated method stub
                Toast.makeText(MemoFriendActivity.this, "OnCancel", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    MyUtil.fb.authorizeCallback(requestCode, resultCode, data);
}