在React Native中使用Firebase进行Google登录

6jygbczu  于 2022-11-30  发布在  React
关注(0)|答案(5)|浏览(193)

我尝试登录Google,但它向我抛出此错误:
代码:“此环境不支持身份验证/操作”消息:运行此应用程序得环境不支持此操作.“location.protocol”必须为http,https或chrome-extension,并且必须启用Web存储.
这是代码:

const provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('profile');
provider.addScope('email');
firebase.auth().signInWithPopup(provider)
  .then((result) => {
    console.log(result);
  })
  .catch((error) => {
    console.log(error);
  })

其他信息:

  • “火线”:“^3.7.1”
  • “React Native ”:“^0.42.0”
  • 平台:Android

有什么想法吗?提前谢谢!

58wvjzkj

58wvjzkj1#

首先我使用react-native-google-signin登录Google。按照这些steps来配置它。
确保您正确签署APK(调试或发布)。
app/build.gradle中,从使用它的依赖项中排除com.google.android.gms,如下所示:

compile(project(":react-native-google-signin")){
    exclude group: "com.google.android.gms" // very important
}

然后将您的Google令牌与Firebase链接:

const provider = firebase.auth.GoogleAuthProvider;
const credential = provider.credential(token);
firebase.auth().signInWithCredential(credential)
  .then((data) => {
    console.log('SUCCESS', data);
  })
  .catch((error) => {
    console.log('ERROR', error);
  });

我使用的是firebase 3.7.1
这是我的依赖项在app/build.gradle中的外观

dependencies {
    compile project(':react-native-facebook-login')
    compile (project(':react-native-fcm')){
        exclude group: "com.google.firebase"
    }
    compile project(':react-native-vector-icons')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:+"
    compile(project(":react-native-google-signin")){
        exclude group: "com.google.android.gms" // very important
    }
    compile ('com.google.firebase:firebase-core:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-messaging:10.0.1') {
        force = true;
    }
    compile ('com.google.android.gms:play-services-auth:10.0.1') {
        force = true;
    }
}
pb3s4cty

pb3s4cty2#

Firebase Documentation
“有头”身份验证方法(如signInWithPopup()signInWithRedirect()linkWithPopup()linkWithRedirect())在React Native(或Cordova)中不起作用。您仍然可以通过使用signInWithCredential()和您选择的提供商提供的OAuth令牌登录或链接到联盟提供商。

lpwwtiir

lpwwtiir3#

一般的问题不是关于用解决方案更改代码,而是我们使用npm link时解决方案将再次中断,因为npm link将重新添加新行,从而再次导致错误。
npm link将使用regex进行搜索,当前行是compile(project(":react-native-google-signin")){,因此我们需要将其更改为compile project ("package"),并像括号字符一样拆分到下一行。

compile project(":react-native-google-signin")
{         
        exclude group: "com.google.android.gms" // very important
}

因此当您运行npm link时,它将检测依赖关系,并且不会被复制,但if块代码也将被持久化。

wfveoks0

wfveoks04#

我很晚才回复,但这将有助于其他人,如果你是使用firebase与谷歌标志,那么你必须排除一些库和那些你的应用程序gradle一样

compile(project(":react-native-google-signin")){
    exclude group: "com.google.android.gms" // very important
 }
 compile ('com.google.android.gms:play-services-auth:10.2.6'){
     force = true;
 }
 compile ("com.google.android.gms:play-services-base:+") { // the plus allows you to use the latest version
    force = true;
 }

 compile (project(path: ':react-native-fbsdk')){
            exclude group: "com.google.android.gms"
 }
 compile(project(":react-native-firebase")){
    exclude group: "com.google.android.gms"
 }

This is discussion about that issue for more detail answer

deyfvvtc

deyfvvtc5#

我发现所有其他答案不是不正确就是过时。
**react-native-firebase**这是官方推荐的软件包集合,为Android和iOS应用程序上的所有Firebase服务提供React Native支持。

1.请务必遵循Firebase Authentication设置说明:https://rnfirebase.io/auth/usage
1.使用google-signin设置Firebase Authenticationhttps://github.com/react-native-google-signin/google-signin

相关问题