如何将facebook集成到android中并登录,获取用户详细信息并注销

如何将facebook集成到android中并登录,获取用户详细信息并注销,android,facebook-login,facebook-android-sdk,Android,Facebook Login,Facebook Android Sdk,如何将facebook集成到android中并登录,获取用户详细信息并注销 代码jsonobjectjson=Util.parseJson(mFacebook.request(“me”)为空。 我在OnComplete()之后从bundle中获得访问令牌。您应该发布更多关于您所做工作的代码,这样更容易理解您的问题。此外,如果您收到错误,请发布logcat输出。检查 这是针对Android的Facebook开发者教程,让你一步一步地将Facebook整合到你的应用程序中。现在,这个教程可能很模糊,

如何将facebook集成到android中并登录,获取用户详细信息并注销

代码
jsonobjectjson=Util.parseJson(mFacebook.request(“me”)为空。

我在
OnComplete()
之后从bundle中获得访问令牌。您应该发布更多关于您所做工作的代码,这样更容易理解您的问题。此外,如果您收到错误,请发布logcat输出。检查
这是针对Android的Facebook开发者教程,让你一步一步地将Facebook整合到你的应用程序中。现在,这个教程可能很模糊,有时很难理解,所以请检查它是一个视频教程,它引导您完成这些步骤,并且非常容易理解。好吧,祝你好运

这对我来说很管用试试这个:

    public class FacebookIntegrationActivity extends AppCompatActivity {

    ActivityFacebookIntegrationBinding binding;
    CallbackManager callbackManager;
    private static final String EMAIL = "email";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    binding = DataBindingUtil.setContentView(FacebookIntegrationActivity.this, 
    R.layout.activity_facebook_integration);

    //[apply click on view]
    applyClickOnView();
    //method to integrate facebook
    facebookIntegration();

  }

  private void applyClickOnView() {
       binding.btnCustom.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
            LoginManager.getInstance().logOut();

LoginManager.getInstance().logInWithReadPermissions(FacebookIntegrationActivity.this, 
 Arrays.asList("public_profile", "email"));
        }
    });
 }

  //[for facebook integration]
    private void facebookIntegration() {
    callbackManager = CallbackManager.Factory.create();
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code to get user profile
                    requestUserProfile(loginResult);
                }

                @Override
                public void onCancel() {
                    String s = "";
                    //code on cancling of request
                }

                @Override
                public void onError(FacebookException exception) {
                    String s = "";
                    //code on error occurence
                }
            });
     }

   private void requestUserProfile(LoginResult loginResult) {
       final GraphRequest request = 
       GraphRequest.newMeRequest(loginResult.getAccessToken(), new 
       GraphRequest.GraphJSONObjectCallback() {
        @Override
        public void onCompleted(JSONObject me, GraphResponse response) {
            if (response.getError() != null) {
            } else {
                try {
                    String id = "";
                    String firstName = "";
                    String lastName = "";
                    String email = "";
                    String userPicUrl = "";
                    String userName = "";
                    if (response.getJSONObject().has("id")) {
                        id = response.getJSONObject().get("id").toString();
                    }
                    if (response.getJSONObject().has("first_name")) {
                        firstName = 
                    response.getJSONObject().get("first_name").toString();
                        userName = firstName;
                    }
                    if (response.getJSONObject().has("last_name")) {
                        lastName = 
                    response.getJSONObject().get("last_name").toString();
                        if (!firstName.equals("")) {
                            userName = firstName + " " + lastName;
                        } else {
                            userName = lastName;
                        }
                    }

                    if (response.getJSONObject().has("email")) {
                        email = response.getJSONObject().get("email").toString();
                    }
                    if (response.getJSONObject().has("id")) {
                        userPicUrl = "https://graph.facebook.com/" + id + "/picture? 
                       type=normal";
                    }
                    //send data to api......in live projects 
              //else display on the view........

                    binding.txtName.setText(userName);
                    binding.txtEmail.setText(email);
            //use picasso or glide to display user profile picture in any 
             ImageView                

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    });
    Bundle parameters = new Bundle();
    parameters.putString("fields", "id, first_name, last_name, email");
    request.setParameters(parameters);
    request.executeAsync();

   }

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


  }
公共类FacebookIntegrationActivity扩展了AppCompativeActivity{
ActivityFacebookIntegrationBinding;
CallbackManager CallbackManager;
私有静态最终字符串EMAIL=“EMAIL”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
binding=DataBindingUtil.setContentView(FacebookIntegrationActivity.this,
R.布局、活动、facebook和整合);
//[应用点击查看]
applyClickOnView();
//整合facebook的方法
facebookIntegration();
}
私有void applycickonview(){
binding.btnCustom.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
LoginManager.getInstance().logOut();
LoginManager.getInstance().logInWithReadPermissions(FacebookIntegrationActivity.this,
asList(“public_profile”、“email”);
}
});
}
//[用于facebook集成]
私有void facebookIntegration(){
callbackManager=callbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
//获取用户配置文件的应用程序代码
requestUserProfile(loginResult);
}
@凌驾
公开作废{
字符串s=“”;
//取消申请守则
}
@凌驾
public void onError(facebook异常){
字符串s=“”;
//发生错误时的代码
}
});
}
私有void requestUserProfile(LoginResult LoginResult){
最终GraphRequest请求=
GraphRequest.NewMereRequest(loginResult.getAccessToken(),新建
GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成公共无效(JSONObject me,GraphResponse响应){
if(response.getError()!=null){
}否则{
试一试{
字符串id=“”;
字符串firstName=“”;
字符串lastName=“”;
字符串email=“”;
字符串userPicUrl=“”;
字符串userName=“”;
if(response.getJSONObject()具有(“id”)){
id=response.getJSONObject().get(“id”).toString();
}
if(response.getJSONObject().has(“first_name”)){
名字=
response.getJSONObject().get(“first_name”).toString();
用户名=名字;
}
if(response.getJSONObject().has(“last_name”)){
姓氏=
response.getJSONObject().get(“last_name”).toString();
如果(!firstName.equals(“”){
用户名=firstName+“”+lastName;
}否则{
用户名=姓氏;
}
}
if(response.getJSONObject().has(“email”)){
email=response.getJSONObject().get(“email”).toString();
}
if(response.getJSONObject()具有(“id”)){
userPicUrl=”https://graph.facebook.com/“+id+”/图片?
类型=正常”;
}
//将数据发送到实时项目中的api
//否则将显示在视图上。。。。。。。。
binding.txtName.setText(用户名);
binding.txtEmail.setText(电子邮件);
//使用毕加索或glide以任意方式显示用户配置文件图片
图像视图
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
});
Bundle参数=新Bundle();
parameters.putString(“字段”、“id、名字、姓氏、电子邮件”);
请求。设置参数(参数);
request.executeAsync();
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
callbackManager.onActivityResult(请求代码、结果代码、数据);
super.onActivityResult(请求代码、结果代码、数据);
}
}

检查您是否拥有manisfestI可以登录的INTERNET\u权限,并且已授予权限。登录后,我无法获取上述json。