2015-03-31 36 views
0

我正在開發一個使用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

回答

2

使用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); 
} 
1

我發現了另一個不同之處時,在移植的解析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" /> 

也許它可以幫助某人。