使用Facebook SDK登录无效

时间:2014-06-14 08:53:14

标签: android facebook android-facebook

我尝试使用> Facebook SDK LoginUsingLoginFragmentActivity整合Facebook登录

它给了我错误:

MainActivityCode:

public class LoginActivity extends Activity {

    private Button mFacebookLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_login);

        mFacebookLogin = (Button) findViewById(R.id.btnFacebookLogin);
        mFacebookLogin.setOnClickListener(mOnClickListener);
    }

    private OnClickListener mOnClickListener = new OnClickListener() {

        @Override
        public void onClick(View view) {
            switch (view.getId()) {
            case R.id.btnFacebookLogin:
                Intent intent = new Intent(LoginActivity.this, LoginIntoFacebookActivity.class);
                startActivity(intent);
                break;

            default:
                break;
            }
        }
    };

}

LoginIntoFacebookActivity.java

public class LoginIntoFacebookActivity extends FragmentActivity {

    private UserSettingsFragment userSettingsFragment;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.login_fragment_activity);

        FragmentManager fragmentManager = getSupportFragmentManager();
        userSettingsFragment = (UserSettingsFragment) fragmentManager.findFragmentById(R.id.login_fragment);
        userSettingsFragment.setSessionStatusCallback(new Session.StatusCallback() {
            @Override
            public void call(Session session, SessionState state, Exception exception) {
                Log.d("LoginUsingLoginFragmentActivity", String.format("New session state: %s", state.toString()));
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        userSettingsFragment.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

}

错误追踪:

E/AndroidRuntime(2901): FATAL EXCEPTION: main
06-14 13:46:28.087: 
E/AndroidRuntime(2901): java.lang.NoClassDefFoundError: com.example.LoginIntoFacebookActivity

E/AndroidRuntime(2901):     at com.example.activity.LoginActivity$1.onClick(LoginActivity.java:31)

Line 31:
        Intent intent = new Intent(MainLoginActivity.this, LoginIntoFacebookActivity.class);

清单:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.activity.MainLoginActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="com.facebook.LoginActivity"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"
                  android:label="@string/app_name" />
        <activity android:name="com.example.activity.LoginIntoFacebookActivity" />
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" />
    </application>

2 个答案:

答案 0 :(得分:0)

我正在使用此代码,工作正常,请查看。

if (facebook.getAccessToken() != null) {

            //user got logged in do you code here is 

        } else {
           loginToFacebook();//user is not login force user to first complete the login

            }

public void loginToFacebook() {

    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebook.setAccessToken(access_token);

        Log.d("FB Sessions", "" + facebook.isSessionValid());
    }

    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }

    if (!facebook.isSessionValid()) {
        facebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();
                        Toast.makeText(sms_by_id.this,
                                "Successfully Login", Toast.LENGTH_LONG)
                                .show();
                        pwindo.dismiss();

                        // Making Login button invisible

                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error

                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors
                        pwindo.dismiss();
                        Toast.makeText(sms_by_id.this, "Facebook Error",
                                Toast.LENGTH_LONG).show();
                    }

                });
    }
}

答案 1 :(得分:0)

AndroidManifest文件可能包含有关LoginIntoFacebookActivity所属的软件包的错误信息 - 您发布的错误跟踪与清单文件之间存在不匹配。

相关问题