Android Facebook api 3.7- ApiException:应用程序必须在安装时请求basic_info权限

时间:2014-03-06 12:10:17

标签: android facebook facebook-android-sdk

我正在使用sdk 3.7
我的Android应用程序不使用FB身份验证,但我有一个共享按钮。

在这个按钮上点击,我试图创建一个会话并打开一个FB WebDialog,当我这样做时,我得到的对话框要求我发布权限,之后会话没有打开,我得到{ {1}}

我试过了:
1.添加'basic_info'权限。 2.卸载我的应用程序和fb应用程序并重新安装。

如何解决这个问题?
(见下面的代码)

com.facebook.FacebookAuthorizationException: UnknownError: ApiException:The app must ask for a basic_info permission at install time.

1 个答案:

答案 0 :(得分:2)

我不确定,我没有用FB API构建项目,但还没有,但我会尽力帮助你。据我所知,您需要separate the request of read and publish permissions.

根据FB API Docs

  

应用应该将读取和发布权限请求分开。计划您的应用在初次登录时请求最低读取权限,然后在某人实际需要时然后发布任何发布权限

因此,您的代码可能是:

/*
 * login to facebook
 */
private void logInToFacebook() {
    //...
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(this)
                .setPermissions(Arrays.asList("basic_info"))
                .setCallback(this));
    } else {
        Session.openActiveSession(this, true, this);
    }
}

/*
 * set the publish_actions permission here
 */
private void publishFeedDialog() {
    Session session = Session.getActiveSession();
    // check the session
    if (session != null){
        // create a new permission
        Session.NewPermissionsRequest newPermissionsRequest = new Session
                .NewPermissionsRequest(this, Arrays.asList("publish_actions"));
        // set a new publish permission request
        session.requestNewPublishPermissions(newPermissionsRequest);

        Bundle params = new Bundle();
        //...   
    }
}

也许这个答案可能对您有所帮助:SSO (Singe Sign-On) not working when Facebook app is installed on device:他在call方法上执行此操作,他说:

  

由于在会话中发生更改时调用call(),session.isOpen()将为true,如果我们不检查是否设置了权限,我们将进入无限循环。

您在文档上有this information requestNewPublishPermissions

  

除了已经授予应用程序的权限之外,此方法还用于请求权限。在与Facebook建立初始连接后发生

我在这一步看到了这个解决方案:Add Publishing Logic因此你可以阅读:

  

该方法首先检查登录用户是否已授予您的应用发布权限;如果他们没有,他们将被提示重新授权应用程序并授予缺少的权限。

我希望这会对你有所帮助。