解析和Facebook集成(无类错误发现错误)

问题描述:

我正在开发一个使用Parse BaaS的Android应用程序,我想让用户使用他们的Facebook帐户登录。我正在使用Android Studio。我导入了Facebook sdk和Parse和ParseFacebookUtils jar文件。 我有以下的活性的代码解析和Facebook集成(无类错误发现错误)

private void initUI() { 
    this.loginButton = (Button) findViewById(R.id.main_login_button); 
    this.loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      loginWithFacebook(); 
     } 
    }); 
} 

private void loginWithFacebook() { 
    ParseFacebookUtils.logIn(this, REQUEST_LOGIN, new LogInCallback() { 
     @Override 
     public void done(ParseUser parseUser, ParseException e) { 
      logToDisplay("User logged in " + parseUser.getUsername()); 

     } 
    }); 
} 

的loginWithFacebook方法被调用。不幸的是,它抛出以下异常:

java.lang.NoClassDefFoundError: com.facebook.Session$Builder 

我在做什么错?

在此先感谢;)

+0

build.gradle - >在'依赖'中编译'com.facebook.android:facebook-android-sdk:3.21.1' – 2015-03-31 15:48:33

+1

我只是想通了。我试图用Facebook SDK来使用它。有一个支持Facebook SDK版本4的Parse版本1.9。不幸的是,文档没有更新。 谢谢;) – 2015-03-31 15:51:26

使用Parse的Android 1.9,我们必须包括ParseFacebookUtils4.jar

同样的文档中给出的例子是不是12小时做了研究后有效。这里是工作的解决方案我有解析1.9和Facebook 4.0 SDK

Button b = (Button)findViewById(R.id.login_button); 
    ParseFacebookUtils.initialize(this); 
    //showHashKey(this); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ParseFacebookUtils.logInWithReadPermissionsInBackground(YOUR_ACTIVITY.this, YOUR_PERMISION_COLLECTION, new LogInCallback() { 
       @Override 
       public void done(ParseUser user, ParseException err) { 
        if (user == null) { 
         Log.d("MyApp", "Uh oh. The user cancelled the Facebook login."); 
        } else if (user.isNew()) { 
         Log.d("MyApp", "User signed up and logged in through Facebook!"); 
        } else { 
         Log.d("MyApp", "User logged in through Facebook!"); 
        } 
       } 
      }); 
     } 
    }); 

ParseFacebookUtils.logIn在ParseFacebookUtils4已经过时了。 onActivityResult上还有另一个弃用函数ParseFacebookUtils.finishAuthentication。它应该是现在这个样子低于

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    ParseFacebookUtils.onActivityResult(requestCode, resultCode, data); 
} 

我发现了另一个不同之处时,在移植的解析Android SDK中1.9和Facebook SDK 4

在您的清单文件替换

<activity android:name="com.facebook.LoginActivity" 
      android:screenOrientation="portrait"/> 

与此:

<activity android:name="com.facebook.FacebookActivity" 
     android:configChanges= 
      "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" 
     android:label="@string/app_name" /> 

也许它可以帮助某人。