Facebook SDK 3.0 - 其他权限

Nic*_*ver 2 permissions android facebook-android-sdk

有一项任务是为服务器端访问令牌提供多种权限(多次读取和发布).在3.0版本中,会话打开有两种不同的方法: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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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));
Run Code Online (Sandbox Code Playgroud)

并且在用户体验方面存在巨大问题,因为在获得额外的权限请求后,将出现facebook登录表单,并且用户必须再次输入凭据...它是否像SDK开发人员设计的那样工作?或者我做错了什么?

Rah*_*ani 5

这个答案可能会迟到.我有一个类似的问题,使用适用于Android的FB SDK 3.0.这是SDK中的一个错误,他们已经在3月20日发布的适用于Android的FB SDK 3.0.1中修复了它.在更改日志中提到:

"Web视图登录"对话框包含正在请求新权限的方案的令牌信息.这避免了每当请求会话的新权限时用户必须输入其登录凭证.

升级后再试一次.从这里获取新的SDK .