Facebook iOS SDK - 打开会话和请求读取权限

时间:2013-08-23 17:27:54

标签: ios facebook facebook-ios-sdk

我正在使用

(void)openWithBehavior:(FBSessionLoginBehavior)behavior completionHandler:(FBSessionStateHandler)handler

打开我的会话,工作正常。打开后,我将获得我的读取权限:

(void)requestNewReadPermissions:(NSArray*)readPermissions completionHandler:(FBSessionRequestPermissionResultHandler)handler

这很好用,但对于通过Mobile Safari登录的用户(或可能是Facebook iOS应用程序,尚未测试),用户会来回跳转两次(点击我的应用程序登录,跳转到Mobile Safari,登录在那里,跳回我的应用程序,跳回Mobile Safari,批准权限,跳回我的应用程序。

返回用户 - 那些已退出我的应用(并删除了令牌)的用户也会获得双跳 - 每次Mobile Safari都会告诉用户他们已经批准了该应用。

我正在使用openWithBehavior,因为我使用FBSessionLoginBehaviorUseSystemAccountIfPresent优先考虑原生iOS登录。我没有看到这个版本与初始权限请求相结合(例如openActiveSessionWithReadPermissions...)。

我希望,对于后续登录,权限已经通过session.permissions知道,但在测试中该值为空,直到调用requestNewReadPermissions

是否可以从其中一种或两种情况中删除双跳(第一次用户登录,后续用户登录)但仍然可以获得相同的权限?

1 个答案:

答案 0 :(得分:3)

您可以通过调用initWithPermissions:方法“启动”具有读取权限的会话。然后调用openWithBehavior:completionHandler:它只使用你已经设置的权限进行一次打开调用。