Google登录错误状态{statusCode = DEVELOPER_ERROR,resolution = null}

pcj*_*pcj 9 android google-signin

我正在通过以下线程在我的android应用程序中集成gmail登录:

https://developers.google.com/identity/sign-in/android/sign-in?configured=true

但我得到的错误是:

状态{statusCode = DEVELOPER_ERROR,resolution = null}

我在这里查看了这个状态代码文档:

https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult.html#DEVELOPER_ERROR

以上链接无助于诊断问题,

我已经创建了调试密钥库文件,并使用keytool生成了SHA-1,同样在Google开发人员控制台中,我添加了包名称,因为它位于清单文件或gradle文件中.

但是所有人似乎都失败了,任何人都可以告诉我这个错误代码表明什么可能出错?

pcj*_*pcj 19

问题是SHA1不匹配,

1]第一个密钥库文件:我解决了错误,问题是在构建apk Android工作室时采用了位于里面的默认密钥库文件C:\Users\<LOGGED_IN_USER_NAME>\.android\debug.keystore

2]第二个密钥库文件:我还创建了另一个位于不同目录的密钥库文件,即app/keystore/debug.keystore

在配置谷歌开发者控制台以在应用程序内集成gmail登录时,我通过上面的第二个密钥库文件生成了sha-1密钥,工作室在构建带有其他密钥库文件的apk文件时因此发生了sha-1密钥不匹配.

为了获取我的密钥库文件, app/keystore/debug.keystore我在应用程序级别配置了gradle文件,代码如下:

signingConfigs {
        debug {
            storeFile file('keystore/debug.keystore')
            keyAlias 'androiddebugkey'
            keyPassword 'android'
            storePassword 'android'
        }
        /*
        release {
            storeFile file('release.keystore')
            storePassword "mystorepassword"
            keyAlias "mykeyalias"
            keyPassword "mykeypassword"
        }
        */
Run Code Online (Sandbox Code Playgroud)

现在生成的apk sha-1签名与google开发者控制台上为您的应用配置的sha-1键匹配.

注意:始终使用debug.keystore来调试gmail集成(在开发时).

参考:

对于Gmail集成:https: //developers.google.com/identity/sign-in/android/start-integrating

要查看哪个sha-1正在用于您的应用程序,请参阅此stackoverflow线程: 密钥库证书的SHA-1指纹

  • 并且还需要在文件中添加buildTypes {debug {signingConfig signingConfigs.debug}} (2认同)

Dav*_*err 9

对于使用React Native Google Signin和Firebase的任何人,请尝试此操作。

第1步:获取Android开发人员调试密钥库的SHA-1

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Run Code Online (Sandbox Code Playgroud)

密码是android。复制SHA-1值,在输出中将类似于以下内容:

Certificate Fingerprints
....
SHA1: aa:bb:cc:dd:ee:ff:11:22:33:44:47:D0:9E:8D:E0:0C:79:F1:0F:CB
Run Code Online (Sandbox Code Playgroud)

第2步:在Firebase控制台中将SHA添加到Android应用

现在,在Firebase控制台中打开您的Android应用并添加SHA-1:

在此处输入图片说明

  • 运行此命令“keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore”给出错误:keytool 错误:java.lang.Exception:只允许一个命令:-exportcert 和 -list 都是指定的。 (3认同)

kau*_*hal 6

对于本机应用程序谷歌登录的反应,我按照以下步骤操作并且它有效

  • 通过以下链接在适用于 iOS/Android 的 Firebase 控制台中设置应用程序 https://console.firebase.google.com/
  • 下载适用于 iOS 的 GoogleService-Info.plist 和适用于 Android 的 google-services.json
  • 不要忘记为android设置设置SHA证书指纹SHA1。必须使用 Android。
  • 然后复制Web客户机(自动由谷歌服务中创建)OAuth 2.0用户端编号从以下网址访问谷歌开发者控制台 https://console.developers.google.com/
  • 在 firebase 开发者控制台和 Google 开发者控制台中完成所有这些步骤后
  • 转到您的代码 打开您的 .js 文件,您可以从中提供通过 Google 登录的选项。
  • componentDidMount 中放置以下代码

GoogleSignin.configure({
      iosClientId: Constants.GOOGLE_LOGIN_CLIENT_ID_IOS,
      webClientId: Constants.GOOGLE_WEB_CLIENT_ID,
      offlineAccess: false
    });
Run Code Online (Sandbox Code Playgroud)

或者你可以像这样创建一个单独的方法并在componentDidMount 中调用它来配置 GoogleSignIn

 async setupGoogleSignin() {
    try {
      await GoogleSignin.hasPlayServices//({ autoResolve: true });
      await GoogleSignin.configure({
        iosClientId: Constants.GOOGLE_LOGIN_CLIENT_ID_IOS,
        webClientId: Constants.GOOGLE_WEB_CLIENT_ID,
        offlineAccess: true
      });

      const user = await GoogleSignin.currentUserAsync();
      console.log("user from google sin in", user);
    } catch (err) {
      console.log("Google signin error", err.code, err.message);
    }
  }
Run Code Online (Sandbox Code Playgroud)

配置 GoogleSignIn 后,您可以在按下 GoogleSignInButton 时调用以下方法

googleAuth() {
    GoogleSignin.signIn()
      .then(user => {
        console.log("user==", user);
        console.log("user name = ", user.user.email);
        console.log("accessTOken = ", user.accessToken);
        this.props.socialMediaLogin( // this is my method that I call on successful  authentication
          user.user.id,
          user.user.name,
          user.user.givenName,
          user.user.familyName,
          user.user.email,
          user.user.photo,
          "GOOGLE",
          user.accessToken
        );
      })
      .catch(err => {
        console.log("WRONG SIGNIN", err);
      })
      .done();
  }
Run Code Online (Sandbox Code Playgroud)


小智 5

在与此问题斗争了近 6 个小时后,我刚刚解锁了自己,这是我的发现。

请确保以下事项:

  1. Google Developer 控制台中的正确包名称。(不要只使用 AndroidManifest.xml 中的包名称。检查 Gradle 文件以查看您的风味名称在构建时是否动态更改)。

  2. 在正确的密钥库位置生成 Sha-1 哈希值。(我本来打算使用默认密钥库位置 ~/.android/debug.keystore,但发现我的应用程序被存储库中的另一个位置覆盖,因此,我一直收到developer_error。)

PS:如果您的应用程序使用后端服务器离线提取数据,请从 Google 登录流程创建项目,因为这将为 Android 和 Web 服务器生成 OAuth 客户端 ID。


Kes*_*era 5

对于 Windows

对于 Windows 使用这个 keytool -exportcert -list -v -alias androiddebugkey -keystore C:\Users[YOUR WINDOWS USER NAME].android\debug.keystore

像这样

keytool -exportcert -list -v -alias androiddebugkey -keystore "你的 debug.keystore" 路径

keytool -exportcert -list -v -alias androiddebugkey -keystore C:\Users\keshav.gera.android\debug.keystore

keytool -exportcert -list -v -alias androiddebugkey -keystore E:\HNSetup2\healthnickel\HealthNickel\android\app\debug.keystore

密码是:- android

在此处输入图片说明

把你的 SHA1 放在Firebase 控制台上

在此处输入图片说明

注意 ===> 更新您的应用文件夹中的 google-service.json 文件 请更新