Java 使用Facebook登录的应用程序不在开发中!它只是加载和关闭-Android Studio

Java 使用Facebook登录的应用程序不在开发中!它只是加载和关闭-Android Studio,java,android,authentication,facebook-login,Java,Android,Authentication,Facebook Login,我已经实现了一个应用程序,我已经使用facebook登录到它。应用程序正在运行,没有崩溃,但facebook登录不起作用。当我打开应用程序并单击facebook登录按钮时,它将显示一个进度条,并且它将立即消失,而不做任何操作。我在日志中发现以下错误 2019-08-29 12:45:24.290 19304-19328/com.appic.testfbauth E/GraphResponse: { HttpStatus: 400, errorCode: 100,

我已经实现了一个应用程序,我已经使用facebook登录到它。应用程序正在运行,没有崩溃,但facebook登录不起作用。当我打开应用程序并单击facebook登录按钮时,它将显示一个进度条,并且它将立即消失,而不做任何操作。我在日志中发现以下错误

2019-08-29 12:45:24.290 19304-19328/com.appic.testfbauth 
E/GraphResponse: 
{
    HttpStatus: 400, 
    errorCode: 100, 
    subErrorCode: 33, 
    errorType: GraphMethodException, 
    errorMessage: Unsupported get request. Object with ID '742177629556035' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api
}
请参阅下面我所做的工作

public类MainActivity扩展了AppCompatActivity{
私人登录按钮登录按钮;
私有CircleImageView CircleImageView;
私有文本视图txtName,txtmail;
私人CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sdkinInitialize(getApplicationContext());
loginButton=findviewbyd(R.id.login_按钮);
circleImageView=findViewById(R.id.profile_pic);
txtName=findviewbyd(R.id.profile\u name);
txtEmail=findviewbyd(R.id.profile\u电子邮件);
checkLoginStatus();
callbackManager=callbackManager.Factory.create();
loginButton.registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
//应用程序代码
}
@凌驾
公开作废{
//应用程序代码
}
@凌驾
public void onError(facebook异常){
//应用程序代码
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
callbackManager.onActivityResult(请求代码、结果代码、数据);
super.onActivityResult(请求代码、结果代码、数据);
}
AccessTokenTracker tokenTracker=新的AccessTokenTracker(){
@凌驾
受保护的onCurrentAccessTokenChanged无效(AccessToken oldAccessToken、AccessToken currentAccessToken){
如果(currentAccessToken==null){
txtEmail.setText(“”);
txtName.setText(“”);
circleImageView.setImageResource(0);
Toast.makeText(MainActivity.this,“用户注销!”,Toast.LENGTH_SHORT.show();
}
else loadUser(currentAccessToken);
}
};
私有void加载用户(AccessToken newAccessToken){
GraphRequest request=GraphRequest.NewMereRequest(newAccessToken,new GraphRequest.GraphJSONObjectCallback()){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
试一试{
String first_name=object.getString(“first_name”);
String last_name=object.getString(“last_name”);
String email=object.getString(“email”);
stringid=object.getString(“id”);
字符串图像\u url=”https://graph.facebook.com/“+id+”/picture?type=normal”;
txtEmail.setText(电子邮件);
txtName.setText(名字+“”+姓氏);
RequestOptions RequestOptions=newrequestoptions();
requestOptions.dontAnimate();
Glide.with(MainActivity.this).load(image\uURL).into(circleImageView);
}捕获(JSONException e){
e、 printStackTrace();
}
}
});
Bundle参数=新Bundle();
parameters.putString(“字段”、“名字、姓氏、电子邮件、id”);
请求。设置参数(参数);
request.executeAsync();
}
私有void checkLoginStatus(){
if(AccessToken.getCurrentAccessToken()!=null){
loadUser(AccessToken.getCurrentAccessToken());
}
}
}


我只想集成facebook登录并获取电子邮件、姓名、图像url、id。

我没有足够的复制来发表评论,所以我粘贴了答案。你只要回答我下面的问题就行了

  • 你可以在真实设备或模拟器中测试你的应用
  • 获取图像的权限
  • 请检查您的浏览器是否有facebook帐户已登录

  • 如果您没有收到电子邮件和姓名,请尝试以下代码:

    JSONObject res;
    
    res = new JSONObject(json_object.toString());
    
    String id = res.getString("id");
    String name = res.getString("name");
    String email = res.getString("email");
    

    更新:
    • 请从您的设备上卸载FB应用程序,并尝试在应用程序中使用FB登录。它工作正常
    更新日期:25/11/209
    • 另外,请更新您的哈希键-
    • 在此之后,将哈希键转换为base 64-

    1。对真实设备2。不,我没有得到任何许可。一号。登录时使用哪封电子邮件,2。请获取图片的许可。我的第三个问题是什么?SasinduLakshithaI认为这与登录facebook和浏览器的电子邮件无关。如何获取图像权限?尚未修复。但请卸载设备中的FB应用程序。并尝试使用FB登录您的应用程序。您的登录成功。请尝试并更新我。是的,它工作正常,但它没有显示图像,名称和电子邮件问题解决。这是因为它在facebook开发者中的开发者应用程序中处于开发模式。当我构建并运行一个已签名的apk并将状态更改为发布模式时,它可以正常工作。