iOS Facebook SDK 在撤销应用程序权限后导致应用程序崩溃

标签 ios objective-c facebook facebook-graph-api

我对 Facebook SDK 有疑问。在我的应用程序中,我可以通过 Facebook Graph 请求从用户的 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);
         }
     }];

一切正常,但如果我随后尝试在 FBSDKLoginManager 上使用 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 为零 此变量在

中初始化
- (void)instanceRestore:(BOOL)calledFromActivateApp

方法,可以在app中调用

[FBSDKAppEvents activateApp]

但是在 instanceRestore: 方法中有一个条件

if (!_isCurrentlyLoaded) {
//
}

未满足,因此未设置 _sessionID。

最佳答案

Facebook iOS 库中存在错误。请更新 Facebook SDK 库。在 FBSDKLoginKit (4.13.1) 中,此错误已修复。

关于iOS Facebook SDK 在撤销应用程序权限后导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599746/

相关文章:

iphone - AttributeString 的默认字体

ios - 按顺序使用 SDWebImage 加载图像

android - 浏览 React Native 中的 Toast 模块

android - 如何使用 facebook sdk 4.1.2 从 android 到 facebook 分享标题和描述

ios - 使用 RxSwift 和 RXCocoa 在按钮单击时验证所有文本字段

ios - GKSession 与 Mac OS X

ios - 如何在 realm-cocoa 中正确使用 RLMBool 属性?

ios - 以编程方式更新高度约束

iphone - 改进 UISearchDisplayController 中的搜索

android - 在 friend 的墙上张贴照片?