首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PlatformException (PlatformException(sign_in_failed,sign_in_failed 12500:,null))

PlatformException (PlatformException(sign_in_failed,sign_in_failed 12500:,null))
EN

Stack Overflow用户
提问于 2019-05-17 14:19:20
回答 13查看 27.8K关注 0票数 23

将崩溃的行:

代码语言:javascript
复制
GoogleSignInAccount googleUser = await _googleSignIn.signIn();

我试过什么:

  1. 我使用以下命令生成了SH1键keytool -list -v \ -alias androiddebugkey -keystore ~/.android/debug.keystore
  2. 将SH1加密添加到console.firebase.google.com中
  3. 重新下载google-service.json
  4. debug.keystore.android复制到MyProject/android
  5. 在调试和发布中运行
  6. 将这些行添加到android/build.gradle中:
代码语言:javascript
复制
- **classpath 'com.android.tools.build:gradle:3.2.1'**
- **classpath 'com.google.gms:google-services:4.2.0'**

  1. android/app/build.gradle中添加以下行:
代码语言:javascript
复制
- **implementation 'com.google.firebase:firebase-core:16.0.9'** under **dependencies**
- **apply plugin: 'com.google.gms.google-services'** on the end of the file.

  1. 在“我的项目”文件夹下创建一个名为release-signing.properties的文件,其中包含这些行。
    • storeFile=debug.keystore
    • keyAlias=androiddebugkey
    • storePassword=android
    • keyPassword=android

此外,我在中搜索了我能找到的所有StackOverflow问题,但没有一个对我有用。

My pubspec.yaml:

代码语言:javascript
复制
firebase_core: ^0.4.0+1
firebase_analytics: ^3.0.1

cloud_firestore: ^0.11.0+2

firebase_auth: ^0.11.1
google_sign_in: ^4.0.1+3

rxdart: ^0.22.0

Auth类:

代码语言:javascript
复制
class AuthService {
  final GoogleSignIn _googleSignIn = GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;
  final Firestore _db = Firestore.instance;

  Observable<FirebaseUser> user;
  Observable<Map<String, dynamic>> profile;
  PublishSubject loading = PublishSubject();

  AuthService() {
    user = Observable(_auth.onAuthStateChanged);
    profile = user.switchMap((FirebaseUser user) {
      if (user != null) {
        return _db
            .collection('user')
            .document(user.uid)
            .snapshots()
            .map((snap) => snap.data);
      } else {
        return Observable.just({});
      }
    });
  }

  Future<FirebaseUser> googleSignIn() async {
    loading.add(true);
    GoogleSignInAccount googleUser = await _googleSignIn.signIn();
    GoogleSignInAuthentication googleAuth = await googleUser.authentication;
    // FirebaseUser user = await _auth.signInWithGoogle(
        // accessToken: googleAuth.accessToken, idToken: googleAuth.idToken);
    final AuthCredential credential = GoogleAuthProvider.getCredential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    FirebaseUser user = await _auth.signInWithCredential(credential);
    updateUserData(user);
    print("Sign in" + user.displayName);

    loading.add(false);

    return user;
  }
}

主类:

代码语言:javascript
复制
void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  AuthService authService = AuthService();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blueGrey,
      ),
      home: Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              MaterialButton(
                child: Text("Log in with Google"),
                color: Colors.blueGrey,
                textColor: Colors.deepOrange,
                onPressed: () => authService.googleSignIn(),
              ),
              MaterialButton(
                child: Text("LogOut"),
                color: Colors.redAccent,
                textColor: Colors.purple,
                onPressed: () => authService.signOut(),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

现在,如果你们中的任何人能为我指明正确的方向,我将非常感激。

下面是一些我已经尝试过的堆栈溢出链接:

  1. Google登录在flutter应用程序发布后不起作用
  2. 失败,com.google.android.gms.common.api.ApiException: 10:,null)
  3. Google登录错误12500

他们中的任何一个我都没有运气,请告诉我你是怎么想的,我该如何解决。

EN

回答 13

Stack Overflow用户

发布于 2019-05-29 03:14:23

@Mircea的操作特别提到了错误12500。我就是这样克服这个错误的:

在过去的几天里,我遇到了同样的问题。我重构了我的代码几十次,添加了断点,重置了SHA-1,SHA-256,并且做了几乎所有其他基于代码的解决方案。我经常遇到这样的错误:

E/flutter (11935): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 12500: , null)

我失去了理智,所以我决定用新的眼光开始,然后再慢慢地解决问题。我注意到一篇晦涩的帖子隐藏在一条帖子里,里面提到有一封支持电子邮件。直到我添加了一个said support email之后,事情才“神奇地”开始运作。我在下面附上了我的项目的Firebase设置的屏幕截图。

票数 50
EN

Stack Overflow用户

发布于 2020-07-06 10:58:09

在我的例子中,我还没有启用Google的登录方法。

票数 16
EN

Stack Overflow用户

发布于 2019-07-11 09:06:21

您需要完成"Oauth同意书屏幕

我去了这个页面(https://console.developers.google.com/apis/credentials),不要忘记选择列表中的项目(左上角)。然后上"Oauth同意书屏幕“

我填写了应用程序徽标和应用程序主页链接和应用程序隐私策略链接(用project.firebaseapp.com)并保存。

现在起作用了,我可以登录了。

这一点必须在文件中加以解释。人们会疯掉的,也不会对这种缺乏文档的行为一窍不通。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56188338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档