将FIRAuthCredential传递给React Native回调

时间:2017-09-21 15:43:19

标签: ios objective-c firebase react-native

我正在尝试通过本机反应来使用Firebase的手机身份验证。我用两种方法创建了一个原生模块:

验证用户的电话号码。这向用户发送带有验证码的SMS。这部分工作正常。

RCT_EXPORT_METHOD(verifyPhoneNumber:(NSString *)phone callback:(RCTResponseSenderBlock)callback)
{
  [[FIRPhoneAuthProvider provider] verifyPhoneNumber:phone
                                          completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) {
    if (error) {
      callback(@[error, [NSNull null]]);
      return;
    }

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:verificationID forKey:@"authVerificationID"];

    callback(@[[NSNull null], verificationID]);
  }];
}

另一个接受该代码,并使用存储的verificationID创建FIRAuthCredential。这似乎也有效。如果我在Native层中记录凭证,我发现它正在创建并输出为:<FIRPhoneAuthCredential: 0x170453950>

RCT_EXPORT_METHOD(getCredential:(NSString *)code callback:(RCTResponseSenderBlock)callback)
{
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  NSString *verificationID = [defaults stringForKey:@"authVerificationID"];

  FIRAuthCredential *credential = [[FIRPhoneAuthProvider provider]
    credentialWithVerificationID:verificationID
                verificationCode:code];

  callback(@[[NSNull null], credential]);
}

我遇到的麻烦就是将该凭证传递回Javascript。我想得到一些可用于登录的内容。

MyNativeModule.getCredential("12345", (error, credential) => {
    ...
    firebase.auth().signInWithCredential(credential)
});

但我总是得到credential null。我如何将该凭证转换为可以在回调中传递并在javascript中使用的内容?

0 个答案:

没有答案