如果我们使用默认行为在android中使用maven SDK进行登录,则它指定登录应尝试使用Facebook App登录,如果该操作不起作用,则退回到Web对话框身份验证。如果不存在facebook应用程序,则当该应用程序发送到后台且可见时,Web对话框auth会显示意外响应。恢复应用程序时,将隐藏Web对话框auth。使用2因子身份验证完成登录后,此功能会导致问题。
将LoginBehaviour更改为LoginBehavior WEB_VIEW_ONLY将显示一个不显示此行为的对话框,从而解决了问题。但是Facebook不建议这样做,因此我的应用程序ID已被Facebook停用。
fb_login_button=findViewById(R.id.fb_login_button);
fb_login_button.setReadPermissions(Arrays.asList(
"public_profile","email"));
callbackManager = CallbackManager.Factory.create();
fb_login_button.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.d("_completed","Login Successful");
}
});
Bundle parameters = new Bundle();
// parameters.putString("fields", "id,first_name,middle_name,last_name,name,email,gender,picture.type(large)");
parameters.putString("fields", "id,first_name,middle_name,last_name,name,email,gender,picture.width(500).height(500)");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Log.e("_error","Face->"+"cancelled");
}
@Override
public void onError(FacebookException error) {
Log.e("_error","Face->"+error);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
}
implementation 'com.facebook.android:facebook-login:[4,5)'
有人有什么解决办法的想法吗?感谢所有帮助。