我正在使用
(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
。
是否可以从其中一种或两种情况中删除双跳(第一次用户登录,后续用户登录)但仍然可以获得相同的权限?
答案 0 :(得分:3)
您可以通过调用initWithPermissions:方法“启动”具有读取权限的会话。然后调用openWithBehavior:completionHandler:它只使用你已经设置的权限进行一次打开调用。