5

下面的代码我用于谷歌登录。我在应用程序文件夹中添加了文件。我在根 gradle 模块中google-services.json使用'。我在开发者控制台检查了我的包并且它是正确的,我添加了我通过在终端上运行命令获得的 SHA1 密钥(我正在使用 ubuntu)。我已经启用了 Google+ API。我已经创建了 OAuth 同意屏幕和 OAuth 客户端 ID。当我尝试使用 google- 登录时仍然出现以下错误classpath 'com.google.gms:google-services:2.0.0keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

{statusCode=DEVELOPER_ERROR,分辨率=null}

我检查了类似的问题,但找不到合适的解决方案。代码

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestProfile().requestId()
            .requestEmail().requestScopes(new Scope(Scopes.PLUS_ME))
            .requestScopes(new Scope(Scopes.PLUS_LOGIN))
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    googleButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);

    }
    });

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        } 
    }
    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();

        } else {
            // Signed out, show unauthenticated UI.
            // updateUI(false);
        }
    }
    @Override
    protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }
    @Override
    protected void onStop() {
        super.onStop();
        if(mGoogleApiClient.isConnected())
        {
            mGoogleApiClient.disconnect();
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        if(mGoogleApiClient.isConnected())
        {
            mGoogleApiClient.connect();
        }
    }

显现

<uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <!-- To use account credentials -->
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
4

7 回答 7

6

您的问题很可能在于您从 SHA1 中选择了 SHA1 ~/.android/debug.keystore,但没有使用它来签署您的构建。

  1. 转到模块选项签名选项卡并添加一个配置文件,其中唯一的字段Store File设置为/Users/<your_user>/.android/debug.keystore

  2. 在 Flavours 选项卡上的Signing Config下拉菜单中选择它。

  3. 在 Build Types 选项卡上,在Signing Config下拉菜单中为您的构建类型选择它(可能是Debug)。

  4. 清理和重建。

于 2016-07-05T12:29:52.020 回答
5

我有同样的问题,这个解决方案已经奏效。希望这会对您和其他人有所帮助。

应用插件:'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {

确保此 applicationId 与您在 Manifest 文件中的包名称相同(大写和小写都很重要)

        applicationId "com.example" 
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
于 2017-08-04T11:48:20.990 回答
5

如果您在两台不同的计算机上工作,则必须再次生成 SHA1 并添加到 console.firebase.google.com,下载 google-service.json 并添加到您的项目中

于 2016-11-19T17:35:26.010 回答
3

通过在 Firebase 控制台中为我的应用程序添加调试密钥库的SHA-1来解决,该应用程序位于 C:\Users\my name.android 当您制作密钥库以在 Firebase 控制台中进行发布更改时

于 2016-07-02T14:54:25.297 回答
3

将 .requestIdToken(BACKEND_CLIENT_ID) 与您的 GoogleSignInOptions 一起使用。

如何获取 BACKEND_CLIENT_ID 可以在这里找到:https ://developers.google.com/identity/sign-in/android/start-integrating#get_your_backend_servers_oauth_20_client_id

希望这有帮助!

于 2016-06-20T20:23:13.613 回答
0

感谢 Aleksey Guriev 的提示...我通过确保在构建过程中实际使用调试密钥来解决我的问题..

对于我在 Android Studio 中的问题,根本没有设置签名配置。我仍然想知道它是怎么发生的。

一旦我将 Signing Config 设置为名为“debug”的配置,那么一切都开始工作了。

在此处输入图像描述

于 2018-04-25T04:11:14.320 回答
0

我的React Native项目遇到了同样的问题。

我必须SHA-1 key使用debug.keystore in android/app文件夹生成。

将目录更改为cd C:\Program Files\Java\jdk1.8.0_251\bin. (您可能有不同的 JDK 版本)。

keytool -list -v -keystore "D:\{ProjectName}\android\app\debug.keystore" -alias androiddebugkey -storepass android -keypass android

于 2020-09-16T04:35:59.640 回答