Android - 打开会话不能使用上一个Facebook应用程序版本,如果未安装facebook,则工作正常

时间:2013-04-25 00:36:22

标签: java android facebook facebook-graph-api

我开发了facebook应用程序,但是当它安装到设备上时,如果设备上没有安装facebook应用程序,并且安装了Session的facebook应用程序无法打开,则工作正常。我的代码如下,

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

      }
}

1 个答案:

答案 0 :(得分:2)

hy guys我想与你分享这些信息,任何人都面临上述问题。

有些时候,当你开发facebook应用程序时,你需要通过keytool生成哈希键"你可以通过这个命令生成它keyto -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) {

    }