在Android中向Facebook发送带有Facebook数据的请求

时间:2016-01-14 11:29:16

标签: android facebook-graph-api android-studio authorization facebook-sdk-4.0

我是Android开发的新手,所以请不要认为我的问题很愚蠢。 在我的申请中,我获得了电子邮件,Facebook和Twitter的授权。电子邮件部分已完成,现在我正在使用LoginManager进行Facebook授权部分。我达到了一个点,点击facebook图标,facebook授权屏幕出现,用户插入他的凭据,Facebook询问有关使用用户数据的许可。屏幕关闭后,用户返回应用程序登录界面。对于电子邮件登录,用户的电子邮件和密码将发送到服务器。在Facebook的情况下,我不清楚我应该发送什么,我该怎么做。这是我的代码,请有人帮忙或暗示 - 我做错了什么?

facebook.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // Call private method

                onFacebookLogin();
            }
        });

****

 private void onFacebookLogin()
    {
        callbackmanager = CallbackManager.Factory.create();

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

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

                        System.out.println("Success");

                        Bundle parameters = new Bundle();
                        parameters.putString("fields", "id, email, first_name, last_name, gender, user_birthday");

                        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);

                                        String email = json.getString("email");
                                        String id = json.getString("id");
                                        String firstname = json.getString("first_name");
                                        String lastname = json.getString("last_name");
                                        String gender = json.getString("gender");
                                        String birthdate = json.getString("user_birthday");


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

                        });
                        request.executeAsync();


                    }

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

                    }

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

                    }
                });
    }

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

        callbackmanager.onActivityResult(requestCode, resultCode, data);

2 个答案:

答案 0 :(得分:1)

好的我得到了这个问题。当你的Facebook登录成功。获取登录所需的所有信息。比如获取电子邮件地址。对于密码,您可以设置参数authByFacebook =&#34; true&#34;。希望这对你有用。

答案 1 :(得分:1)

尝试在登录成功后将意图移至下一页 如下面给出的代码

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
                //Toast.makeText(LoginActivity.this, "on success", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                intent.putExtra("login_type", "facebook");
                startActivity(intent);
                finish();
            }
     @Override
    protected void onResume() {
        super.onResume();

        // Logs 'install' and 'app activate' App Events.
        AppEventsLogger.activateApp(this, getResources().getString(R.string.facebook_app_id));
    }

    @Override
    protected void onPause() {
        super.onPause();

        // Logs 'app deactivate' App Event.
        AppEventsLogger.deactivateApp(this, getResources().getString(R.string.facebook_app_id));
    }