2

有一项任务是为服务器端访问令牌提供多个权限(多个读取和发布)。在 3.0 版中,有 2 种单独的会话打开方法:openForRead 和 openForPublish。

一开始应用程序要求读取权限:

private void authorizeFacebook() {
    if (DEBUG)
        Log.d(TAG, "Facebook authorization");
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(this.createReadRequest());
    } else {
        Session.openActiveSession(this, true, mFacebookSessionCallback);
    }
}

但是在状态回调之后,应用程序要求发布权限:

if (session.isOpened() && !session.getPermissions().contains("publish_stream")) {
    if (DEBUG)
        Log.d(TAG, "Facebook, Request additional permission: Publish Stream");

    session.requestNewPublishPermissions(new NewPermissionsRequest(this, Arrays.asList("publish_stream")).setCallback(mFacebookSessionCallback).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO));

而且用户体验存在很大的问题,因为在额外的权限请求后,出现了 facebook 登录表单,用户必须再次输入凭据......它是否按照 SDK 开发人员的设计工作?..还是我做错了什么?

4

2 回答 2

5

这个答案可能为时已晚。我遇到了类似的问题,适用于 Android 的 FB SDK 3.0。这是 SDK 中的一个错误,他们已在 3 月 20 日发布的 FB SDK 3.0.1 for Android 中修复了它。更改日志提到:

Web 视图登录对话框包含请求新权限的场景的令牌信息。这避免了用户在会话请求新权限时必须输入他们的登录凭据。

升级后重试。从这里获取新的 SDK 。

于 2013-04-01T07:46:16.853 回答
0

我发现如果用户没有在他们的 Android 设备上安装 Facebook 应用程序,那么每次请求他/她获得额外权限时都会出现登录屏幕。但是,如果用户确实在他们的设备上安装了 Facebook 应用程序,那么我发现他/她只需要通过单击是/否按钮来确认/取消确认其他权限。

顺便说一句,我整理了一系列三篇简短的文章,解释如何打开 Facebook 会话、请求额外权限等等。这是第一个。

于 2013-02-28T10:40:02.603 回答