【问题标题】:Android Facebook integration getting e-mail idAndroid Facebook 集成获取电子邮件 ID
【发布时间】:2017-04-30 14:10:00
【问题描述】:

在我的 android 应用程序中,我完成了 Facebook 集成。Facebook 登录工作正常。如何从 android 中的 Facebook 集成获取用户的电子邮件 ID? 请帮忙。 提前致谢。

【问题讨论】:

    标签: android facebook email


    【解决方案1】:

    使用权限和此代码

         loginButton.setReadPermissions(Arrays.asList( "email","user_birthday"));
    

    并使用 Graph Api

      private FacebookCallback<LoginResult> mCallBack = new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
    
    
    
               progressDialog.dismiss();
                // App code
                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(
                                    JSONObject object,
                                    GraphResponse response) {
    
                                Log.e("response: ", response + "");
                                Log.e("object: ", object + "");
                                    try {
                                        userfbData = new UserfbData();
                                        userfbData.facebookID = object.getString("id").toString();
                                        userfbData.email = object.getString("email").toString();
                                        userfbData.name = object.getString("name").toString();
                                        userfbData.gender = object.getString("gender").toString();
                                         userfbData.birthday=object.getString("birthday").toString();
                                        PrefUtils.setCurrentUser(userfbData,LoginActivity.this);
                                        Log.d("flist","flist"+ userfbData.flist);
    
                                    }catch (Exception e){
                                        e.printStackTrace();
                                    }
                                //  Toast.makeText(LoginActivity.this,"welcome "+userfbData.name+userfbData.email+userfbData.gender+userfbData.birthday, Toast.LENGTH_LONG).show();
                                Toast.makeText(LoginActivity.this,"welcome "+ userfbData.name, Toast.LENGTH_LONG).show();
                                    Intent intent=new Intent(LoginActivity.this,LogoutActivity.class);
                                    startActivity(intent);
                                    finish();
    
                            }
    
                        });
    
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender, birthday");
                request.setParameters(parameters);
                request.executeAsync();
            }
    
            @Override
            public void onCancel() {
                progressDialog.dismiss();
            }
    
            @Override
            public void onError(FacebookException e) {
               progressDialog.dismiss();
                Log.d("error","error"+e);
                e.printStackTrace();
            }
        };
    

    用户Fb数据

    public class UserfbData {
    
    
        public String name;
    
        public String email;
    
        public String facebookID;
    
        public String gender;
    
        public  String birthday;
    
    }
    

    【讨论】:

      【解决方案2】:

      您需要调用 GraphRequest 来获取登录用户的个人信息,例如 id、姓名、电子邮件等。

      GraphRequest request = GraphRequest.newMeRequest(accessToken,
          new GraphRequest.GraphJSONObjectCallback() {
              @Override
              public void onCompleted(JSONObject object, GraphResponse response) {
                  try {
                      String email = object.getString("email");
                  } catch (JSONException e) {
                  }
              }
          }
      );
      Bundle parameters = new Bundle();
      parameters.putString("fields","email");
      request.setParameters(parameters);
      request.executeAsync();
      

      【讨论】:

        猜你喜欢
        • 2017-08-04
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2021-03-04
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多