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的來源,而我應該在用戶體驗的一致性和代碼風格之間取得一些平衡。 ;(

相關問題