Android 安装Facebook应用程序时Facebook登录崩溃

Android 安装Facebook应用程序时Facebook登录崩溃,android,facebook,kotlin,sdk,Android,Facebook,Kotlin,Sdk,我试图用最新的Facebook SDK版本在我的android应用程序中实现Facebook登录。 虽然它适用于未安装facebook应用程序的手机,但当手机安装facebook应用程序时,facebook登录正在崩溃,错误如下: 2019-12-12 14:06:27.321 19494-19523/com.abc.xyz E/GraphResponse: {HttpStatus: 400, errorCode: 100, subErrorCode: 33, errorType: GraphM

我试图用最新的Facebook SDK版本在我的android应用程序中实现Facebook登录。 虽然它适用于未安装facebook应用程序的手机,但当手机安装facebook应用程序时,facebook登录正在崩溃,错误如下:

2019-12-12 14:06:27.321 19494-19523/com.abc.xyz E/GraphResponse: {HttpStatus: 400, errorCode: 100, subErrorCode: 33, errorType: GraphMethodException, errorMessage: Unsupported get request. Object with ID '572893573534105' 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}
2019-12-12 14:06:27.656 19494-19494/com.abc.xyz W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@3860e9a
2019-12-12 14:06:29.073 19494-19494/com.abc.xyz W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@fa88da4
我的facebook登录代码是->

var callbackManager: CallbackManager? = null
callbackManager = CallbackManager.Factory.create()
LoginManager.getInstance().registerCallback(callbackManager,
    object : FacebookCallback<LoginResult?> {
        override fun onSuccess(loginResult: LoginResult?) { // App code

        }

        override fun onCancel() { // App code

        }

        override fun onError(exception: FacebookException) { // App code
        }
    })
var callbackManager:callbackManager?=无效的
callbackManager=callbackManager.Factory.create()
LoginManager.getInstance().registerCallback(callbackManager,
对象:FacebookCallback{
成功时覆盖乐趣(loginResult:loginResult?{//App code)
}
重写fun onCancel(){//应用程序代码
}
重写错误(异常:FacebookException){//应用程序代码
}
})

非常感谢您的帮助解决方案:

Build.gradle

java文件

public void connectToFacebook(){
if(LoginManager.getInstance()!=null){
LoginManager.getInstance().logOut();
LoginManager.getInstance().registerCallback(管理器,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
Log.e(标记“onSuccess:LoginResult”+LoginResult.toString());
getAccountDetails(loginResult);
}
@凌驾
公开作废{
Log.e(标记“onCancel:Login Cancel”);
}
@凌驾
public void onError(facebook异常错误){
Snackbar.make(linearmain,“连接到Facebook时出错”,Snackbar.LENGTH\u LONG.show();
Log.e(标记“onError:连接到facebook时出错”+error.getMessage());
}
});
//使用权限登录。
LoginManager.getInstance().logInWithPublishPermissions(这是数组.asList(“管理页面”、“发布页面”、“发布到组”);
}否则{
i(标记“connectToFacebook:LoginManager为空”);
}
}
公共作废getAccountDetails(最终登录结果登录结果){
if(loginResult!=null&&loginResult.getAccessToken()!=null){
GraphRequest request=GraphRequest.NewMereRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback()){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
String accountDetailsResponse=String.valueOf(对象);
Log.i(标记“未完成:AccountDetailsResponse:”+AccountDetailsResponse);
}
});
Bundle permission_param=新Bundle();
权限参数putString(“字段”、“id、帐户、名称、电子邮件、图片.宽度(120).高度(120)”);
请求.设置参数(权限参数);
request.executeAsync();
}否则{
Log.e(标记“onCancel:loginResult或AccessToken为null”);
}
}
清单:


String.xml

您的应用程序\u Id
FBU您的应用程序Id
com.facebook.app.facebook内容提供者您的应用程序Id

不支持的get请求。ID为“…”的对象不存在,由于缺少权限而无法加载,或者不支持此操作。
是当您无权读取有关该对象的任何数据时通常会遇到的错误。但是,您给出的代码没有显示任何显式的API请求,因此您必须在当前仅显示
//App code
注释的部分中提供更多信息,说明您实际在做什么。但它不会使用代码
LoginManager.getInstance().logOut()将我从facebook应用中注销吗?我正在使用facebook登录的依赖项
implementation 'com.facebook.android:facebook-login:5.5.1'
    implementation 'com.facebook.android:facebook-share:5.5.1'
 public void connectToFacebook() {
        if (LoginManager.getInstance() != null) {
            LoginManager.getInstance().logOut();
            LoginManager.getInstance().registerCallback(manager,
                    new FacebookCallback<LoginResult>() {
                        @Override
                        public void onSuccess(LoginResult loginResult) {
                            Log.e(TAG, "onSuccess : LoginResult" + loginResult.toString());
                            getAccountDetails(loginResult);
                        }

                        @Override
                        public void onCancel() {
                            Log.e(TAG, "onCancel: Login Cancel");
                        }

                        @Override
                        public void onError(FacebookException error) {
                            Snackbar.make(linearmain, "Something going wrong to connect to Facebook", Snackbar.LENGTH_LONG).show();
                            Log.e(TAG, "onError: Something wrong to connect to facebook" + error.getMessage());
                        }
                    });

            //login with permission.
            LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("manage_pages", "publish_pages", "publish_to_groups"));
        } else {
            Log.i(TAG, "connectToFacebook: LoginManager is Null");
        }
    }



public void getAccountDetails(final LoginResult loginResult) {

    if (loginResult != null && loginResult.getAccessToken() != null) {

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

                String accountDetailsResponse = String.valueOf(object);
                Log.i(TAG, "onCompleted: AccountDetailsResponse: " + accountDetailsResponse);


            }
        });

        Bundle permission_param = new Bundle();
        permission_param.putString("fields", "id, accounts, name, email, picture.width(120).height(120)");
        request.setParameters(permission_param);
        request.executeAsync();

    } else {
        Log.e(TAG, "onCancel: loginResult or AccessToken is null");
    }

}
 <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

        <provider
            android:name="com.facebook.FacebookContentProvider"
            android:authorities="com.facebook.app.FacebookContentProvider494396834670647"
            android:exported="true" />
<string name="facebook_app_id">Your_app_Id</string> <!-- this id for live-->
    <string name="fb_login_protocol_scheme">fbYour_app_Id</string>
    <string name="fb_authorities">com.facebook.app.FacebookContentProviderYour_app_Id</string>