簡體   English   中英

iOS Facebook SDK在撤消應用程序權限后崩潰應用程序

[英]iOS Facebook SDK crashes app after revoking app permissions

我有Facebook SDK的問題。 在我的應用程序中,我有可能通過Facebook圖形請求從用戶的Facebook帳戶中刪除該應用程序:

        NSString *graphPath = [NSString stringWithFormat:@"/%@/permissions", [FBSDKAccessToken currentAccessToken].userID];
    [[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath parameters:nil HTTPMethod:@"DELETE"]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"Facebook removed");
         } else {
             NSLog(@"Facebook error: %@", error);
         }
     }];

一切正常,但如果我嘗試使用logInWithReadPermissions上的logInWithReadPermissions再次登錄,Safari會出現,我點擊“Contiune”來授權應用程序,它崩潰並出現錯誤:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[3]'

當我再次啟動應用程序后嘗試登錄時,一切正常。

你有什么線索,這可能是什么原因?

更新:

FBSDKCoreKit文件之一(即FBSDKTimeSpentData.m)中的一個例外發生在149-155行,我們有:

NSDictionary *timeSpentData =
  @{
    FBSDKTimeSpentPersistKeySessionSecondsSpent : @(_secondsSpentInCurrentSession),
    FBSDKTimeSpentPersistKeySessionNumInterruptions : @(_numInterruptionsInCurrentSession),
    FBSDKTimeSpentPersistKeyLastSuspendTime : @(now),
    FBSDKTimeSpentPersistKeySessionID : _sessionID,
    };

_sessionID為nil此變量初始化為

- (void)instanceRestore:(BOOL)calledFromActivateApp

方法,可以通過調用在app中調用

[FBSDKAppEvents activateApp]

但是在instanceRestore:方法中有一個條件

if (!_isCurrentlyLoaded) {
//
}

這是不符合的,因此沒有設置_sessionID。

Facebook iOS庫中有一個錯誤。 請更新Facebook SDK庫。 在FBSDKLoginKit(4.13.1)中,此錯誤已得到修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM