我正在尝试弄清楚如何通过facebook进行简单登录,然后登录后即可进入下一个活动。目前,它只带您进入facebook退出页面,我无法弄清楚为什么。
我的登录页面上的onSuccess下有一个startActivity行,但是什么也没有发生。
我有2个活动。一个是登录,另一个是配置文件,它具有一个后退按钮。我一直在这里关注Facebook教程:
https://developers.facebook.com/docs/facebook-login/android#
任何见解/建议都值得赞赏。
这是我的代码
登录
package com.example.test;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import java.util.Arrays;
public class SignIn extends AppCompatActivity {
private CallbackManager callbackManager;
private static final String EMAIL = "email";
private LoginButton login_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signin);
callbackManager = CallbackManager.Factory.create();
login_button = (LoginButton) findViewById(R.id.login_button);
login_button.setReadPermissions(Arrays.asList(EMAIL));
// Callback registration
login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Intent intent = new Intent(SignIn.this, Profile.class);
startActivity(intent);
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
}
个人资料
package com.example.test;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class Profile extends AppCompatActivity {
Button backButton = (Button)findViewById(R.id.backButton);
public void backToSignIn(View view) {
Intent intent = new Intent(getApplicationContext(), SignIn.class);
startActivity(intent);
}
}
答案 0 :(得分:1)
我认为您在注册另一个回调时会覆盖第一个回调,请尝试删除第二个回调寄存器
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
或更改
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
到
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Intent intent = new Intent(SignIn.this, Profile.class);
startActivity(intent);
}
已在第二个回调中注册