Я пытаюсь использовать RNFirebase для входа в приложение с помощью ссылки электронной почты
signInWithDynamicLink = async url => {
const { dispatch, navigation } = this.props;
const isWithEmail = RNFirebase.auth().isSignInWithEmailLink(url);
if (isWithEmail) {
try {
dispatch(setSignInByEmail(true));
const signInEmail = await AsyncStorage.getItem('emailForLogin');
if (signInEmail) {
await RNFirebase.auth().signInWithEmailLink(signInEmail, url);
await AsyncStorage.removeItem('emailForLogin');
} else {
// Handle non sign in email link
}
} catch (error) {
console.log(error);
}
}
Я могу получить длинную ссылку электронной почты с помощью apiKey в url
, прекрасно в Android.однако в iOS url
это только URL-адрес перенаправления из actionCodeSettings
, поэтому isWithEmail
всегда будет false
.Я сделал что-то не так в своем коде?
url
в Android https://example.page.link/?link=https://project.firebaseapp.com/__/auth/...https://redirect-url.com%26lang%3Den
в iOS https://redirect-url.com
Вот мой AppDelegate.m для обработчика динамических ссылок
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<NSString *, id> *)options {
return [[RNFirebaseLinks instance] application:application openURL:url options:options];
}
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *))restorationHandler {
return [[RNFirebaseLinks instance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
}
Обновление
не важно.нужно только изменить связанный домен на динамическую ссылку по умолчанию