小编Hau*_*guu的帖子

如何在React Native中限制google登录我公司的电子邮件域名(@ company.com)?

防止用户使用不以@ mycompany.com结尾的电子邮件地址通过Firebase/Google身份验证登录我们的内部应用程序的最佳方法是什么?

目标

  • 阻止用户使用错误的电子邮件登录该应用
  • 获取用户的公司电子邮件地址并将其用于其他地方的身份验证(即从内部网站提取数据)

约束

  • 我使用的是react-native init,因为我必须使用我们公司的原生SDK模块实现
  • 最好使用Firebase的解决方案,因为我们已经将其与所述原生SDK模块一起用于FCM /推送通知.

研究结果

  • 我看到react-native-google-signin有一个"hostedDomain"选项,但它似乎没有做任何事情.我不确定如何使用它,并且没有使用它的文档或好例子.有它功能请求这里,但是这就是我能找到.
  • 我看到有一个类似的repo,react-native-google-sign-in,但它不提供有关此主题的更多信息.
  • 我在某处读到我可能认为这一切都错了,身份验证不能限制电子邮件地址(?),但我可以限制谁可以使用所述电子邮件地址访问信息.这对我没有帮助,因为我们现在没有使用Firebase的数据库.我需要一种方法来指导用户使用他们的公司电子邮件登录.
  • 这个人似乎有类似的问题,并找到了护照的解决方案,但我不知道如何将此应用于我的用例.

建立

  • IntelliJ Ultimate 2017.2.2
  • React Native 0.47.1(使用react-native init,而不是CRNA或expo,因为我需要与本机SDK模块集成)
  • 来自Firebase的google-services.json存在于android/app文件夹中

Android安装程序

package.json依赖项

"dependencies": {
    "create-react-class": "^15.6.0", /* Ignore this */
    "firebase": "^4.2.0",
    "react": "16.0.0-alpha.12",
    "react-native": "0.47.1",
    "react-native-app-intro": "^1.1.5",
    "react-native-google-signin": "^0.11.0",
    "react-native-linear-gradient": "^2.2.0",
    "react-navigation": "^1.0.0-beta.12"
}
Run Code Online (Sandbox Code Playgroud)

安卓/ settings.gradle

rootProject.name = '[My Project Name]'
include ':react-native-google-signin'
project(':react-native-google-signin').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-google-signin/android')
include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')

include ':app', ':[Internal Android SDK]'
Run Code Online (Sandbox Code Playgroud)

安卓/的build.gradle …

email android google-authentication react-native firebase-authentication

8
推荐指数
1
解决办法
2229
查看次数

我应该使用 Redux Saga 进行 React 导航吗?

我无法理解如何最好地将Redux-SagaReact-Navigation 结合使用

来自 Redux-Saga 文档:

redux-saga 是一个库,旨在使 React/Redux 应用程序中的副作用(即异步事物,如数据获取和不纯的事物,如访问浏览器缓存)变得更容易和更好。

心理模型是,saga 就像应用程序中的一个单独线程,它只负责副作用。

在 React-Navigation 的 redux 集成部分,它链接到这个示例该示例显示 Redux 在没有 redux-saga 的情况下使用。在这个例子中,组件直接将动作分派给 reducer,没有中间件。

IE

src/components/LoginScreen.js

const LoginScreen = ({ navigation }) => (
  <View style={styles.container}>
    <Text style={styles.welcome}>
      Screen A
    </Text>
    <Text style={styles.instructions}>
      This is great
    </Text>
    <Button
      onPress={() => navigation.dispatch({ type: 'Login' })}
      title="Log in"
    />
  </View>
);
Run Code Online (Sandbox Code Playgroud)

src/reducers/nav.js

function nav(state = initialNavState, action) {
  let nextState;
  switch (action.type) {
    case 'Login':
      nextState = …
Run Code Online (Sandbox Code Playgroud)

javascript react-native redux-saga react-redux react-navigation

5
推荐指数
1
解决办法
4404
查看次数