我尝试使用> 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>
答案 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所属的软件包的错误信息 - 您发布的错误跟踪与清单文件之间存在不匹配。