1

Facebook iOS SDK 3.8用于我的项目,现在我升级到3.22。Facebook iOS SDK请求权限publish_actions,但用户需要再次输入密码

在请求“publish_actions”权限期间发生了一件奇怪的事情,这是用户需要再次输入她的帐户&密码。在之前的版本中,“再次登录”部分将被略过。我想知道Facebook SDK中的逻辑是否更改,或者我必须更改会话处理过程。关于这个问题的任何想法?

我用来请求 “publish_actions” 权限的方法是:

[activeSession openWithBehavior: FBSessionLoginBehaviorForcingWebView 
     completionHandler:^(FBSession *session, 
          FBSessionState state, NSError *error) { 
    [session reauthorizeWithPermissions:@[@"publish_actions"] 
                     isRead:NO 
                     behavior:FBSessionLoginBehaviorForcingWebView 
                   defaultAudience:FBSessionDefaultAudienceFriends 
                  completionHandler:^(FBSession *session, NSError *error) { 
} 

而且我也试过

[FBSession.activeSession requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] 
              defaultAudience:FBSessionDefaultAudienceFriends 
            completionHandler:^(FBSession *session, NSError *error) { 
             __block NSString *alertText; 
             __block NSString *alertTitle; 
             _reauthorizeInProgress = YES; 
             if (!error) { 
              if ([FBSession.activeSession.permissions 
               indexOfObject:@"publish_actions"] == NSNotFound){ 
               // Permission not granted, tell the user we will not publish 
               alertTitle = @"Permission not granted"; 
               alertText = @"Your action will not be published to Facebook."; 
               [[[UIAlertView alloc] initWithTitle:alertTitle 
                      message:alertText 
                      delegate:self 
                    cancelButtonTitle:@"OK!" 
                    otherButtonTitles:nil] show]; 
              } else { 
               // Permission granted, publish the OG story 

              } 

             } else { 
              // There was an error, handle it 
              // See https://developers.facebook.com/docs/ios/errors/ 
             } 
            }]; 

回答

1

此行为是默认被Facebook设置。该文件https://developers.facebook.com/docs/facebook-login/ios/v2.2说:

的WebView的缺点是:

人们在他们的登录凭据每次通过登录顺其自然时间来填写。

在FBSession.m文件,我更改代码的方法

- (void)retryableAuthorizeWithPermissions:(NSArray *)permissions 
         defaultAudience:(FBSessionDefaultAudience)defaultAudience 
         integratedAuth:(BOOL)tryIntegratedAuth 
          FBAppAuth:(BOOL)tryFBAppAuth 
          safariAuth:(BOOL)trySafariAuth 
          fallback:(BOOL)tryFallback 
         isReauthorize:(BOOL)isReauthorize 
        canFetchAppSettings:(BOOL)canFetchAppSettings 

而且不要删除Cookie要求另一许可时,应更换

// To avoid surprises, delete any cookies we currently have. 
    [FBUtility deleteFacebookCookies]; 

// To avoid surprises, delete any cookies we currently have. 
if(!isReauthorize){ 
    [FBUtility deleteFacebookCookies]; 
} 

我同意修改th不是一个好主意e SDK的来源,而我应该在用户体验的一致性和代码风格之间取得一些平衡。 ;(

相关问题