代码之家  ›  专栏  ›  技术社区  ›  user2317753

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

  •  0
  • user2317753  · 技术社区  · 12 年前

    我开发facebook应用程序,但当它安装到设备上时,如果设备上没有安装facebook应用程序并且当安装了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 回复  |  直到 8 年前
        1
  •  2
  •   user2317753    12 年前

    嗨,伙计们,我想和你们分享这些信息,因为任何一个面临上述问题的人。

    有些时候,当你开发facebook应用程序时,你需要通过keytool生成哈希密钥“你可以通过这个命令生成它keytool-exportcert-alias androiddebugkey-keystore C:\Users\YOURUSER.android\debug.keystore|”C:\bin\bin\openssl“sha1-binary|”C:\bin \bin\open ssl“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) {
    
        }
    
    推荐文章