Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java (#200)需要扩展权限:发布操作_Java_Android_Facebook_Facebook Graph Api - Fatal编程技术网

Java (#200)需要扩展权限:发布操作

Java (#200)需要扩展权限:发布操作,java,android,facebook,facebook-graph-api,Java,Android,Facebook,Facebook Graph Api,我开发了一个游戏 在这个游戏中,用户可以通过FaceBook API登录,然后通过score API在FaceBook上分享最佳分数 但当我用我的Facebook帐户登录游戏时,一切都正常,当我用其他帐户登录时,我出现了以下错误: (#200)需要扩展权限:发布操作 这是我的代码: public void postScore() { final int score = getScore(); Log.i(TAG, "" + score); if

我开发了一个游戏

在这个游戏中,用户可以通过FaceBook API登录,然后通过score API在FaceBook上分享最佳分数

但当我用我的Facebook帐户登录游戏时,一切都正常,当我用其他帐户登录时,我出现了以下错误:

(#200)需要扩展权限:发布操作

这是我的代码:

public void postScore() {

        final int score = getScore();
        Log.i(TAG, "" + score);
        if (score > 0) {
            // Only post the score if they smashed at least one friend!
            // Post the score to FB (for score stories and distribution)
            Bundle fbParams = new Bundle();
            fbParams.putString("score", "" + score);
            Request postScoreRequest = new Request(Session.getActiveSession(),
                    "me/scores", fbParams, HttpMethod.POST,
                    new Request.Callback() {
                        @Override
                        public void onCompleted(Response response) {
                            Log.i(TAG, "onCompleted");
                            FacebookRequestError error = response.getError();
                            if (error != null) {
                                Log.e(TAG, "Posting Score to Facebook failed: "
                                        + error.getErrorMessage());

                            } else {
                                Log.i(TAG,
                                        "Score posted successfully to Facebook");
                            }
                        }
                    });
            Request.executeBatchAsync(postScoreRequest);
        }
    }

请帮助我。

我通过以下步骤解决问题:

步骤1

postButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Session session = Session.getActiveSession();
            if (session == null || !session.isOpened()) {
                Log.i(TAG, "Session is null!");
                return;
            }
            List<String> permissions = session.getPermissions();
            if (!permissions.contains("publish_actions")) {
                // the user didn't grant this permission, so we need to
                // prompt them.
                askForPublishActionsForScores();
                return;
            } else {
                ReadAndWriteFBscore.postScore();
            }

        }
    });
private void askForPublishActionsForScores() {
    new AlertDialog.Builder(MainActivity.this)
            .setPositiveButton("بله",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit OK. Request Facebook friends
                            // permission.
                            requestPublishPermissions();
                        }
                    })
            .setNegativeButton("خیر",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit cancel.


                        }
                    }).setTitle(R.string.publish_scores_dialog_title)
            .setMessage(R.string.publish_scores_dialog_message).show();
 }
void requestPublishPermissions() {
    Log.d(TAG, "Requesting publish permissions.");
    final Session session = Session.getActiveSession();
    if (session != null) {
        Session.NewPermissionsRequest newPermissionsRequest = new      Session.NewPermissionsRequest(
                this, PERMISSIONS)
                // demonstrate how to set an audience for the publish
                // permissions,
                // if none are set, this defaults to FRIENDS
                .setDefaultAudience(SessionDefaultAudience.FRIENDS)
                .setRequestCode(AUTH_PUBLISH_ACTIONS_SCORES_ACTIVITY_CODE);
        session.requestNewPublishPermissions(newPermissionsRequest);
    }
}
private static final int AUTH_PUBLISH_ACTIONS_SCORES_ACTIVITY_CODE = 103;
步骤3

postButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Session session = Session.getActiveSession();
            if (session == null || !session.isOpened()) {
                Log.i(TAG, "Session is null!");
                return;
            }
            List<String> permissions = session.getPermissions();
            if (!permissions.contains("publish_actions")) {
                // the user didn't grant this permission, so we need to
                // prompt them.
                askForPublishActionsForScores();
                return;
            } else {
                ReadAndWriteFBscore.postScore();
            }

        }
    });
private void askForPublishActionsForScores() {
    new AlertDialog.Builder(MainActivity.this)
            .setPositiveButton("بله",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit OK. Request Facebook friends
                            // permission.
                            requestPublishPermissions();
                        }
                    })
            .setNegativeButton("خیر",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit cancel.


                        }
                    }).setTitle(R.string.publish_scores_dialog_title)
            .setMessage(R.string.publish_scores_dialog_message).show();
 }
void requestPublishPermissions() {
    Log.d(TAG, "Requesting publish permissions.");
    final Session session = Session.getActiveSession();
    if (session != null) {
        Session.NewPermissionsRequest newPermissionsRequest = new      Session.NewPermissionsRequest(
                this, PERMISSIONS)
                // demonstrate how to set an audience for the publish
                // permissions,
                // if none are set, this defaults to FRIENDS
                .setDefaultAudience(SessionDefaultAudience.FRIENDS)
                .setRequestCode(AUTH_PUBLISH_ACTIONS_SCORES_ACTIVITY_CODE);
        session.requestNewPublishPermissions(newPermissionsRequest);
    }
}
private static final int AUTH_PUBLISH_ACTIONS_SCORES_ACTIVITY_CODE = 103;
步骤4

postButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Session session = Session.getActiveSession();
            if (session == null || !session.isOpened()) {
                Log.i(TAG, "Session is null!");
                return;
            }
            List<String> permissions = session.getPermissions();
            if (!permissions.contains("publish_actions")) {
                // the user didn't grant this permission, so we need to
                // prompt them.
                askForPublishActionsForScores();
                return;
            } else {
                ReadAndWriteFBscore.postScore();
            }

        }
    });
private void askForPublishActionsForScores() {
    new AlertDialog.Builder(MainActivity.this)
            .setPositiveButton("بله",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit OK. Request Facebook friends
                            // permission.
                            requestPublishPermissions();
                        }
                    })
            .setNegativeButton("خیر",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit cancel.


                        }
                    }).setTitle(R.string.publish_scores_dialog_title)
            .setMessage(R.string.publish_scores_dialog_message).show();
 }
void requestPublishPermissions() {
    Log.d(TAG, "Requesting publish permissions.");
    final Session session = Session.getActiveSession();
    if (session != null) {
        Session.NewPermissionsRequest newPermissionsRequest = new      Session.NewPermissionsRequest(
                this, PERMISSIONS)
                // demonstrate how to set an audience for the publish
                // permissions,
                // if none are set, this defaults to FRIENDS
                .setDefaultAudience(SessionDefaultAudience.FRIENDS)
                .setRequestCode(AUTH_PUBLISH_ACTIONS_SCORES_ACTIVITY_CODE);
        session.requestNewPublishPermissions(newPermissionsRequest);
    }
}
private static final int AUTH_PUBLISH_ACTIONS_SCORES_ACTIVITY_CODE = 103;

其他API似乎存在身份验证问题。您的应用程序通过审核了吗?如果你需要发布动作权限,那么你需要通过App Review进行请求。Tank you@MingLi,我的App Review已完成,我将完全获得“发布动作”和“用户游戏活动”权限。我仍然有这个错误(