并提前感谢您的时间和关注!
我的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密钥不匹配。您的密钥”XXX“与应用程序设置中指定的允许密钥不匹配。请检查http://www.facebook.com/developers代码中的应用程序设置: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对象。同样,此代码适用于模拟器。有谁知道如何在设备上解决它?我希望我能尽快在设备上查找并分享。
答案 0 :(得分:1)
好的,我自己得到了答案。这是android密钥的不匹配。当您从设备而不是模拟器运行应用程序时,您需要将您在开发PC上获得的哈希键替换为手机上的应用程序之一,您可以从e.getMsg的输出中获取,例如我在这里显示从您的设备获取密钥,并将其设置为facebook.com/developers中的新哈希。除了您的PC之外,您还可以添加此哈希键,以防您希望应用程序在手机和PC上运行。希望这有助于其他人。
答案 1 :(得分:0)
如果您能够在设备上看到祝酒词,请翻转值e.getMessage()
以查看更详细的错误报告。