如何从Facebook sdk 4.0获取电子邮件

时间:2016-05-12 09:48:18

标签: android facebook android-studio facebook-sdk-4.0

我正在使用android登录使用Facebook登录后我想从Facebook保存数据我想从Facebook保存以下数据

  1. 名字
  2. 中间名
  3. 姓氏
  4. 用户ID
  5. 个人资料图片
  6. 电子邮件
  7. 个人资料名称
  8. 我尝试了一些跟随

    的代码
    loginButton = (LoginButton)findViewById(R.id.login_button);
    
            loginButton = (LoginButton) findViewById(R.id.login_button);
    
            loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends"));
    
            loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    AccessToken accessToken = loginResult.getAccessToken();
                    Profile profile = Profile.getCurrentProfile();
    
                    String userid = profile.getId();
                    String userfirstname = profile.getFirstName();
                    String middlename = profile.getMiddleName();
                    String userlastname = profile.getLastName();
                    Uri userimage = profile.getProfilePictureUri(30, 40);
                    String name = profile.getName();
                }
    
                @Override
                public void onCancel() {
                    //info = ("Login attempt canceled.");
                }
    
                @Override
                public void onError(FacebookException e) {
                    // info = ("Login attempt failed.");
                }
            });
    

    从上面的代码我成功获得其他所有但无法收到电子邮件。

    我想要什么

    1. 我想收到用户的电子邮件
    2. 我想为 HTTP CALL 创建一个新的json数组,以便从用户帐户保存上述数据。

1 个答案:

答案 0 :(得分:3)

试一试为我工作

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

            if (AccessToken.getCurrentAccessToken() != null) {
                RequestData();
            }
        }

        @Override
        public void onCancel() {

        }

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




private void RequestData() {

    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
        @Override
        public void onCompleted(JSONObject object,GraphResponse response) {

            final JSONObject json = response.getJSONObject();



            try {
                if(json != null){
                    text = "<b>Name :</b> "+json.getString("name")+"<br><br><b>Email :</b> "+json.getString("email")+"<br><br><b>Profile link :</b> "+json.getString("link");
                    /*details_txt.setText(Html.fromHtml(text));
                    profile.setProfileId(json.getString("id"));*/

                    Log.e(TAG, json.getString("name"));
                    Log.e(TAG, json.getString("email"));
                    Log.e(TAG, json.getString("id"));
                    //web.loadData(text, "text/html", "UTF-8");

                }







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


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

//从ID

获取个人资料图片
 public static Bitmap getFacebookProfilePicture(String userID){
    try {
        URL imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large");
        Log.e(TAG,imageURL.toString());
        try {
            bitmap = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }

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

    return bitmap;
}