Java Android-开放会话不适用于上一个Facebook应用程序版本,如果未安装Facebook,则工作正常
我开发了facebook应用程序,但当它安装到设备上时,如果设备上没有安装facebook应用程序,它可以正常工作,并且当facebook应用程序安装时,会话无法打开。我的代码如下:Java Android-开放会话不适用于上一个Facebook应用程序版本,如果未安装Facebook,则工作正常,java,android,facebook,facebook-graph-api,Java,Android,Facebook,Facebook Graph Api,我开发了facebook应用程序,但当它安装到设备上时,如果设备上没有安装facebook应用程序,它可以正常工作,并且当facebook应用程序安装时,会话无法打开。我的代码如下: Session.openActiveSession(this, true, new Session.StatusCallback() { // callback when session changes state @Overr
Session.openActiveSession(this, true,
new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response res) {
if (user != null) {
User.getInstance().setProfile(user);
}
}
});
}
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
if(Session.getActiveSession().isOpened()) {
Log.i("here opened", "thnx");
}
}
hy伙计们,我想与你们分享这些信息,因为任何人都面临上述问题 有时,在开发facebook应用程序时,您需要通过keytool生成散列密钥“您可以通过以下命令生成它:keytool-exportcert-alias androiddebugkey-keystore C:\Users\YOURUSER.android\debug.keystore |”C:\bin\bin\openssl“sha1-binary”|“C:\bin\bin\openssl”base64输入android作为密码” 上述方法中的问题是,它有时会生成错误的哈希键,因为它取决于JDK版本,并且使用了openssl应用程序,因此您的facebook应用程序无法登录 问题解决后,您可以在活动中编写下面的代码,并使用生成的哈希键代替上面的哈希键,这样一切都会正常工作
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.kartag.gui",
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) {
}
我相信这是重复的: