当前位置: 首页 > 知识库问答 >
问题:

react原生ios项目中的Firebase身份验证问题

翟嘉志
2023-03-14

我们已经将原生IOS和Android应用程序发布到商店。目前即将完成 react-native 版本以取代本机应用程序。React-native 应用程序使用与本机相同的 firebase 项目。Firebase 身份验证适用于原生应用和 React-原生Android应用。在 react-native ios 上,我们无法使用 google 登录。

错误日志:

发生内部错误,请重试。NativeFirebase Error:[auth/interner-错误]发生内部错误,请重试。onGoogleButtonPress$@http://localhost:8081/index.bundle?platform=ios

很难弄清楚错误消息到底出了什么问题。

当我们将react本机IOS应用程序配置为使用登录到其他Firebase项目(用于开发目的)时,谷歌登录工作正常。在这两种情况下,IOS捆绑包id都相同。

所有与应用程序相关的代码和配置都是根据react-native-firebase库文档完成的。

在新创建的具有相同IOS捆绑包id且没有添加任何其他端功能代码的react本机项目上,该问题也是可重复的。

import React from 'react';
import {
  SafeAreaView,
  StyleSheet,
  ScrollView,
  View,
  Button,
  StatusBar,
} from 'react-native';

import {Colors} from 'react-native/Libraries/NewAppScreen';
import {GoogleSignin} from '@react-native-community/google-signin';
import auth from '@react-native-firebase/auth';

const App: () => React$Node = () => {
  async function onGoogleButtonPress() {
    const {idToken} = await GoogleSignin.signIn();
    const googleCredential = auth.GoogleAuthProvider.credential(idToken);
    return auth().signInWithCredential(googleCredential);
  }

  GoogleSignin.configure({
    webClientId:
      '<PASTE CLIEND ID FROM GoogleService-Info.plist>',
  });

  return (
    <>
      <StatusBar barStyle="dark-content" />
      <SafeAreaView>
        <ScrollView
          contentInsetAdjustmentBehavior="automatic"
          style={styles.scrollView}>
          <View style={styles.body}>
            <Button
              title="Google Sign-In"
              onPress={() =>
                onGoogleButtonPress().then(() =>
                  console.log('Signed in with Google!'),
                )
              }
            />
          </View>
        </ScrollView>
      </SafeAreaView>
    </>
  );
};

const styles = StyleSheet.create({
  scrollView: {
    backgroundColor: Colors.lighter,
  },
  body: {
    backgroundColor: Colors.white,
  },
});

export default App;

在生产 Firebase 实例上添加具有其他捆绑包 ID 的新 IOS 项目并将这些捆绑包设置为反应原生应用时,Firebase 身份验证效果很好。

所以,在react原生应用程序代码中看起来并不是问题,而是与捆绑包id相关的问题。同时,具有相同捆绑包id的IOS原生应用程序运行良好。

帮我查一下Firebase认证不起作用的原因?

共有1个答案

蓬长恨
2023-03-14

我也遇到了同样的问题,但是我没有找到任何关于这个问题的文档。所以下面是我的经验。

我的开发环境也有一个Firebase项目,一切正常。我为我的prod环境做了另一个,Firebase-auth系统地在ios上返回错误“发生内部错误,请重试”。

所以我更改了prod项目(当然还有Xcode)的bundle id,问题就消失了。

这是有道理的,在android上你不能有相同的对包名称/sha证书。在ios上,相同的限制被合并到唯一的bundle id上。但如果像在android上一样发生错误会更好。

所以总结:Firebase 项目只使用一个捆绑 ID!

 类似资料:
  • 我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?

  • 在本章中,我们将匿名认证用户。 步骤1 - 启用匿名身份验证 这和我们以前的章节是一样的。需要打开Firebase信息中心,点击侧边菜单中的Auth和标签栏内的认证方法,需要启用匿名身份验证。 第2步 - 登录功能 可以使用方法进行此认证。 示例 让我们来看看下面的例子,参考示例代码 -

  • 使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。

  • 我使用react native和redux,但性能很慢.例如,在初始页面上,我有一个检查系统,如果处于还原状态的用户通过了身份验证,则显示home page,如果没有显示auth屏幕。 当我的用户通过身份验证时,我的应用程序最初会呈现身份验证屏幕几秒钟,然后呈现主屏幕,这是一个糟糕的用户体验,所以我的redux状态可能需要时间更新,而且速度很慢。 请看我的代码并帮助我做错了什么。 我正在检查异步存

  • 如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子

  • 我有一个现有的项目是建立在: AngularJS 我正在重写前端,将其移动到Angular 8,我想利用firebase的功能。 我目前正在集成身份验证功能(用户名/密码、谷歌、twitter、facebook等) 我在考虑我的下一步: 一旦我的使用通过firebase验证,我的GAE PHP后端如何检查用户是否通过了验证 我在想象这样的事情: 一旦通过firebase验证,使用OAuth2令牌调