0

并提前感谢您的时间和关注!
我使用 facebook sdk 的 android 应用程序在模拟器上运行良好,但我在三星 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 密钥不匹配。您的密钥“XXX”与您的应用程序设置中指定的允许密钥不匹配。请在http://www.facebook.com/developers CODE检查您的应用程序设置: 0"


代码:

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);
}

My.Util.fb 是一个静态 Facebook 对象。同样,此代码适用于模拟器。有人知道如何在设备上解决它吗?我希望我能尽快在设备上查找并分享。

4

2 回答 2

1

好的,我自己得到了答案。这是 android 键的不匹配。从设备而不是模拟器运行应用程序时,您需要将开发 PC 上的哈希键替换为手机上的应用程序之一,您可以从 e.getMsg 的输出中获取显示在这里。从您的设备中获取密钥,并将其设置为 facebook.com/developers 中的新哈希。除了您拥有的 PC 之外,您还可以添加此哈希键,以防您希望该应用程序在手机和 PC 上运行。希望这对其他人有帮助。

于 2012-09-02T06:44:46.147 回答
0

如果您能够在设备上看到 toast,则 toast 值e.getMessage()以查看更详细的错误报告。

于 2012-08-31T17:50:38.413 回答