2013-02-25 100 views
2

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

在开始申请是要求读取权限:

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开发人员的设计工作?..或者我做错了什么?

回答

5

可能是这个答案的晚了。我有一个类似的问题,用于Android的FB SDK 3.0。这是SDK中的一个bug,他们在3月20日发布的FB SDK 3.0.1 for Android中修复了它。 change log提到:

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

升级后再试一次。从here获取新的SDK。

+0

嗯,更好的是,Facebook SDK团队给开发者一种方法,所以我们可以避免链接权限的东西。但是,无论如何,谢谢;) – 2013-04-01 09:28:26

0

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

顺便说一句,我已经制定了一系列三个简短的文章,解释如何打开Facebook会话,请求额外的权限等等。第一个是Here's