警告:违反我们的平台政策的应用违规行为并在 Facebook 上创造负面体验

MR.*_*. K 6 android facebook facebook-graph-api

脸书警报

示例应用 (ID ***************) 似乎违反了我们的平台政策,在 Facebook 上创造了负面体验。如果您不进行更改以使您的应用符合规定,我们将被迫对您的应用进行限制。


我的电子邮件收件箱

在努力为每个人创造出色的平台体验的过程中,我们要求开发人员确保他们构建的应用程序符合我们的平台政策。您的应用示例应用 (AppId: ***************) 不符合以下规定:

平台政策 8.1:验证您是否正确集成了登录。您的应用程序不应在测试过程中崩溃或挂起。

在登录期间,您的 Android 应用程序崩溃或过度挂起,为尝试使用您的应用程序的人们带来了糟糕的体验。为确保此流程顺利运行,请检查您是否已正确集成 Facebook 登录。我们建议您在所有集成上测试登录。如果您还没有这样做,请:


依赖:

implementation 'com.facebook.android:facebook-login:[5,6)'
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml:

<activity android:name="com.facebook.FacebookActivity"
   android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
Run Code Online (Sandbox Code Playgroud)

onCreate():

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.act_login);

        callbackManager = CallbackManager.Factory.create();

        fb_login_button = findViewById(R.id.fb_login_button);
        fb_login_button.setReadPermissions(Arrays.asList(EMAIL));

        init();
    }
Run Code Online (Sandbox Code Playgroud)

按钮点击:

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email"));
facebookCallBack();
Run Code Online (Sandbox Code Playgroud)

facebookCallBack() 方法:

private void facebookCallBack() {
        fb_login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                //AccessToken accessToken = loginResult.getAccessToken();
                getUserDetails(loginResult);

            }

            @Override
            public void onCancel() {
                Log.print("FB= " + "onCancel");
            }

            @Override
            public void onError(FacebookException exception) {
                Log.print("FB= " + "onError" + exception.toString());
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

getUserDetails(loginResult) 方法:

protected void getUserDetails(LoginResult loginResult) {
        GraphRequest data_request = GraphRequest.newMeRequest(
                loginResult.getAccessToken(),
                new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(
                            JSONObject json_object,
                            GraphResponse responseg) {
                        try {
                            //get my response here
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
        Bundle permission_param = new Bundle();
        permission_param.putString("fields", "id, name, email, first_name, last_name");
        data_request.setParameters(permission_param);
        data_request.executeAsync();
    }
Run Code Online (Sandbox Code Playgroud)

我试图在 2 到 3 个月前解决这个问题。但我的应用程序仍然受到 facebook 的限制。

任何人都有解决方案,请立即帮助我。