Java Facebook RegisterCallback无法正常工作

Java Facebook RegisterCallback无法正常工作,java,android,facebook,android-studio,facebook-graph-api,Java,Android,Facebook,Android Studio,Facebook Graph Api,我正在制作一个名为“BrandShopping”的应用程序。该应用程序用于在线交付和购物。这就是为什么我需要不同的登录方法,以便用户可以选择他们觉得最舒适的登录方式 我遇到的问题是我的Facebook登录。我不太明白我做错了什么。我在RegisterCallback()函数方面遇到了很多问题 问题在于,应用程序是通过登录按钮指定给RegisterCallback()(在本例中为RegisterWithFacebookBtn)。在OnSuccess()方法中,我指定应用程序调用名为FetchUse

我正在制作一个名为“BrandShopping”的应用程序。该应用程序用于在线交付和购物。这就是为什么我需要不同的登录方法,以便用户可以选择他们觉得最舒适的登录方式

我遇到的问题是我的Facebook登录。我不太明白我做错了什么。我在
RegisterCallback()
函数方面遇到了很多问题

问题在于,应用程序是通过登录按钮指定给
RegisterCallback()
(在本例中为
RegisterWithFacebookBtn
)。在
OnSuccess()
方法中,我指定应用程序调用名为
FetchUserData()
的方法,该方法应该从Facebook数据库读取用户信息。在该方法的后面,我让应用程序检查用户是否登录。如果这是
真的
转到AccountinfoActivity
(另一个活动),但它从不这样做

我试过调试这个应用程序,但我不明白程序出了什么问题。如果
registerCallback()
成功,我确实有一个toast应该显示,但它没有显示toast

我的代码如下:

public class LoginOrSignupActivity extends AppCompatActivity {

    private Button LoginBtn, RegisterWithEmailBtn, RegisterWithGoogleBtn;
    private String Tag;
    private ProgressDialog LoadingBar;
    private LoginButton RegisterWithFacebookBtn;

    private FirebaseDatabase firebasedatabase = 
FirebaseDatabase.getInstance();
    private DatabaseReference database = firebasedatabase.getReference();

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

        LoadinGUI(); //LOAD IN THE GRAPHICAL USER INTERFACE

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
          .requestIdToken(getString(R.string.default_web_client_id))
          .requestEmail()
          .build();

        LoginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginOrSignupActivity.this, LogInActivity.class));
            }
        });

        RegisterWithEmailBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginOrSignupActivity.this, RegisterActivity.class));
            }
        });


        RegisterWithFacebookBtn.setOnClickListener(new View.OnClickListener() { //REGISTRATION WITH FACEBOOK
            @Override
            public void onClick(View view) {
              SignInWithFacebook();
            }
        });
    }

    private void SignInWithFacebook(){ //FOR FACEBOOK LOGIN

        CallbackManager callbackManager = CallbackManager.Factory.create();

        RegisterWithFacebookBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                    Toast.makeText(LoginOrSignupActivity.this, "Part one succeded", Toast.LENGTH_SHORT).show();
                    AccessToken accessToken = loginResult.getAccessToken();
                    FetchUserData(accessToken);
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException error) {
            }
        });
    }

    // FOR FACEBOOK LOGIN, ALSO SAVES TO THE FIREBASE DATABSE
    private void FetchUserData(final AccessToken accessToken){ 
        GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
              JSONObject object, GraphResponse response
            ) {
              try {
                String name = object.getString("name");
                String email = object.getString("email");
                // ADD MORE HERE

                /* WHEN EVERYTHING IS DONE AND SUCCEEDS, 
                 *   GOTO ACCOUNTINFOACTIVITY ACTIVITY; MAY NEED TO BE
                 * MODIFIED LATER ON 
                 */
                if(accessToken != null) {
                  startActivity(new Intent(LoginOrSignupActivity.this, AccountInfoActivity.class));
                }
              } catch (JSONException e) {
                e.printStackTrace();
              }
            }
        });

        Bundle parameters = new Bundle();
        parameters.putString("fileds", "id,name,emai");
    }
公共类LoginOrSignupActivity扩展了AppCompatActivity{
私人按钮登录,注册者使用EmailBTN,注册者使用GoogleBTN;
私有字符串标签;
私有进程对话框加载栏;
私人登录按钮注册表,带FaceBookBTN;
私有FirebaseDatabase FirebaseDatabase=
FirebaseDatabase.getInstance();
private DatabaseReference database=firebasedatabase.getReference();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u login\u或注册);
LoadinGUI();//在图形用户界面中加载
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestIdToken(getString(R.string.default\u web\u client\u id))
.requestEmail()
.build();
LoginBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
startActivity(新意图(LoginOrSignupActivity.this,LogInActivity.class));
}
});
RegisterWithEmailBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
startActivity(新意图(LoginOrSignupActivity.this、RegisterActivity.class));
}
});
RegisterWithFacebookBtn.setOnClickListener(新视图.OnClickListener(){//向FACEBOOK注册
@凌驾
公共void onClick(视图){
使用Facebook()登录;
}
});
}
专用void SignInWithFacebook(){//用于FACEBOOK登录
CallbackManager CallbackManager=CallbackManager.Factory.create();
RegisterWithFacebookBtn.registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
Toast.makeText(LoginOrSignupActivity.this,“第一部分成功”,Toast.LENGTH_SHORT.show();
AccessToken AccessToken=loginResult.getAccessToken();
获取用户数据(accessToken);
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
}
});
}
//对于FACEBOOK登录,还将保存到FIREBASE数据库
私有void FetchUserData(最终AccessToken AccessToken){
GraphRequest request=GraphRequest.NewMereRequest(accessToken,new GraphRequest.GraphJSONObjectCallback(){
@凌驾
公共空间未完成(
JSONObject对象,GraphResponse响应
) {
试一试{
字符串名称=object.getString(“名称”);
String email=object.getString(“email”);
//在这里添加更多
/*当一切都完成并取得成功时,
*转到ACCOUNTINFOACTIVITY活动;可能需要
*后来修改
*/
if(accessToken!=null){
startActivity(新的意图(LoginOrSignupActivity.this、AccountInfoActivity.class));
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
});
Bundle参数=新Bundle();
parameters.putString(“fileds”、“id、name、emai”);
}

非常感谢您提供的任何帮助

您是否在活动中添加了此项

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

是的,我已经删除了。它刚刚被删除,因此代码更易于阅读:/尝试在OneRor()方法中添加日志并查看错误。您可能会意外调用LoginManager。OneRor()方法中的onActivityResult与您之前的问题重复,我知道…在这方面没有得到任何帮助。。。