谷歌登录android后出现错误12501

谷歌登录android后出现错误12501,android,google-api,java-native-interface,google-play-services,google-signin,Android,Google Api,Java Native Interface,Google Play Services,Google Signin,我在一个名为JNI throught networkHandler\u GoogleSignin的库中有一个类,它将启动一个执行google登录的片段活动。帐户选择显示良好,但在选择帐户后,我出现以下错误12501:Status{statusCode=unknown Status code:12501,resolution=null},并且在片段的onActivityResult中有一个resultCode 0。我搜索了此错误的原因,只发现此错误与Oauth链接,因此,我尝试使用或不使用.req

我在一个名为JNI throught networkHandler\u GoogleSignin的库中有一个类,它将启动一个执行google登录的片段活动。帐户选择显示良好,但在选择帐户后,我出现以下错误12501:Status{statusCode=unknown Status code:12501,resolution=null},并且在片段的onActivityResult中有一个resultCode 0。

我搜索了此错误的原因,只发现此错误与Oauth链接,因此,我尝试使用或不使用.requestIdToken(…),但得到了相同的错误。

我还尝试将google-services.json放在主项目和库项目的根文件夹或应用文件夹中,再次出现相同的错误(无论如何,我的项目在Eclipse上,我知道Eclipse上不需要这个json文件).
那么原因是什么呢?

以下是我的代码:

public class LibNetworkHandler extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
{       
    static GoogleApiClient mGoogleApiClient;
    static final int RC_SIGN_IN = 1;

    public static native void requestCompletedCallback(String result);

    private static Intent thisActivity;
    private static Activity mainActivity;

       @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    //.requestIdToken(web_client_id)
                    .requestEmail()
                    .build();

            mGoogleApiClient = new GoogleApiClient.Builder(S3DXAndroidTools.getMainActivity().getApplicationContext())
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                    .build();

            Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
            startActivityForResult(signInIntent, RC_SIGN_IN);

        }

       @Override
        public void onStart() {
           super.onStart();
           mGoogleApiClient.connect();
       }

       @Override
        public void onStop() {
           super.onStop();
           mGoogleApiClient.disconnect();
       }

    public static void networkHandler_GoogleSignin (final String parameters)
    {
        setIncomingParameters(parameters);
        mainActivity = S3DXAndroidTools.getMainActivity();

        thisActivity = new Intent(S3DXAndroidTools.getMainActivity().getApplicationContext(),LibNetworkHandler.class);
        mainActivity.startActivity(thisActivity);
        Log.e("test", "test45 : " + thisActivity.toString());

    }

    @Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.e("test", "test35 : " + data.toString());
        // Result returned from launching the Intent from
        //   GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result.isSuccess()) {Log.e("test", "test3");
                GoogleSignInAccount acct = result.getSignInAccount();
                String output=setOutputParameters(acct.getId());
                requestCompletedCallback(output);
            }else{
                Log.e("test", "test27 : "+result.getStatus().toString());
            }
        }
    }

    @Override
    public void onConnectionFailed(ConnectionResult arg0) {
        Log.e("error", "connexion failed ");        
    }

    @Override
    public void onConnected(Bundle arg0) {
        if(mGoogleApiClient.isConnected()){
            Log.e("test", "Google play connexion ok");
        }
    }

    @Override
    public void onConnectionSuspended(int arg0) {
        // TODO Auto-generated method stub

    }
}
编辑


我发现了问题所在:似乎在将我的项目迁移到firebase并在同一项目下添加库包和主包之后,我需要在我的library build.gradle中导入firebase插件,即使我的代码中没有使用firebase登录。此外,在迁移项目后,有效的web id密钥发生了更改。requestIdToken()方法似乎不适用于firebase。这可能是由于Sha-1和Sha-256版本与调试密钥不匹配

将所有三个(Debug:Sha-1、Release:Sha-1和Sha-256)键添加到firebase控制台中,然后重新下载json并替换


这对我来说很好。

这可能是由于Sha-1和Sha-256的发布和调试密钥不匹配造成的

将所有三个(Debug:Sha-1、Release:Sha-1和Sha-256)键添加到firebase控制台中,然后重新下载json并替换


这对我来说很好。

请注意。使用Eclipse可能会妨碍您快速创建应用程序并找到构建项目所需的资源。也许这就是你收到这个错误的原因。要从Eclipse迁移到Android Studio,只需遵循Google开发者的说明。有关此错误12501的更多信息,请检查这些相关的SO问题,以及它是否能帮助您。@KENdi我也在Android Studio上尝试过,我有完全相同的错误。此外,我检查了您链接的问题,但问题的原因是使用了.requestIdToken(…),我没有注意到这一点。使用Eclipse可能会妨碍您快速创建应用程序并找到构建项目所需的资源。也许这就是你收到这个错误的原因。要从Eclipse迁移到Android Studio,只需遵循Google开发者的说明。有关此错误12501的更多信息,请检查这些相关的SO问题,以及它是否能帮助您。@KENdi我也在Android Studio上尝试过,我有完全相同的错误。另外,我检查了您链接的问题,但问题的原因是使用了.requestIdToken(…),我没有添加它