代码之家  ›  专栏  ›  技术社区  ›  user3745888

Firebase是否在iOS应用程序中使用钥匙链?

  •  0
  • user3745888  · 技术社区  · 5 年前

    我的函数添加到我的第一个ViewController中,如下所示:

    - (NSString *)tapGetButton{
        NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
        NSString *version = [info objectForKey:@"CFBundleIdentifier"];
        NSDictionary *query = @{
                            (__bridge id)kSecClass      : (__bridge id)kSecClassGenericPassword,
                            (__bridge id)kSecAttrService: version,
                            (__bridge id)kSecReturnData : (__bridge id)kCFBooleanTrue,
                            (__bridge id)kSecMatchLimit : (__bridge id)kSecMatchLimitOne
                            };
    
       CFDataRef token = nil;
       // 検索
       OSStatus err = SecItemCopyMatching((__bridge CFDictionaryRef)query,
                                       (CFTypeRef *)&token);
    
       NSString *accessToken = nil;
    
       // success
       if (err == errSecSuccess) {
           NSLog(@"Success: get token");
       }
       // not found
       else if (err == errSecItemNotFound) {
           NSLog(@"NotFound: get token");
       }
       else {
           NSLog(@"Error: get token");
       }
    
       return accessToken;
    }
    

    [FIRApp configure];
    

    如果我删除这个代码,keychain中的值将正确返回,但是如果我添加这个代码,返回的值是数字1,或者在其他情况下是一个长的数字。。。

    Firebase使用的是钥匙链吗?还有其他形式的初始化Firebase吗?

    谢谢!

    编辑:我没有使用Firebase来存储帐户或密码,我使用Firebase来共享事件。。。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Koshub    5 年前

    Firebase iOS SDK 经常使用钥匙链。你可以检查源代码。例如 here

    我建议你自己定义一下 service account

        let query: [String: Any] = [
            kSecClass as String: kSecClassGenericPassword,
            kSecAttrAccount as String: "for example, token name",
            kSecAttrService as String: "for example, token provider name",
        ]