首页 > 解决方案 > 无法使用 android 中的 facebook 登录将 facebook 电子邮件的值发送到服务器

问题描述

我正在尝试在我的应用程序中进行 facebook 登录,但我无法将 facebook 电子邮件的值发送到应用程序服务器。当我在 onCompleted 中调试应用程序时,我可以看到 Facebook 电子邮件,但是当我传递该值时,它显示 null.fb_login 是一个 ImageButton,它不是一个 facebooklogin 按钮。

这是我的代码:-

fb_login.setOnClickListener(v -> {


            if (internetDetector.hasConnectivity()) {

                flag = 1;



                onFblogin();


            }
            else {

                Toast.makeText(LoginActivity.this,"Please Check Your Internet Connection",Toast.LENGTH_LONG).show();
            }



        });

下面是 onfbLogin 方法,我在其中发出图形请求并尝试将电子邮件、id、名称保存到全局变量中。

 private void onFblogin()  {
        callbackManager = CallbackManager.Factory.create();

        // Set permissions
       fbLoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList( "email",  "public_profile"));

        fbLoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {

                        System.out.println("Success");
                       GraphRequest request = GraphRequest.newMeRequest(
                                loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                                    @Override
                                    public void onCompleted(JSONObject json, GraphResponse response) {
                                        if (response.getError() != null) {
                                            // handle error
                                            System.out.println("ERROR");
                                        } else {
                                            System.out.println("Success");
                                            try {

                                                String jsonresult = String.valueOf(json);
                                                System.out.println("JSON Result"+jsonresult);

                                              facebookName = json.getString("name");
                                              facebookEmail = json.getString("email");
                                              facebookid = json.getString("id");



                                            } catch (JSONException e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    }

                                });

                        Bundle parameters = new Bundle();
                        parameters.putString("fields", "id,name,email");
                        request.setParameters(parameters);
                        request.executeAsync();


                    }

                    @Override
                    public void onCancel() {
                        Log.d("facebook Login","On cancel");
                    }

                    @Override
                    public void onError(FacebookException error) {
                        Log.d("facebook Login",error.toString());
                    }
                });


        return;
    }

在此之后我有 onActivityResult 方法。

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


        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> completedTask = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(completedTask);
        }
        else {

            callbackManager.onActivityResult(requestCode, resultCode, data);

                   postDataToServer();

        }

    }

在 postDataToServer() 方法中,我试图获取 facebookEmail 的值,但我在那里得到了 null。也许我做错了。请指导我,以便我可以进行更改并获取变量的值。

标签: androidfacebookfacebook-login

解决方案


推荐阅读